PL / SQL és un llenguatge de procediment que supera les deficiències amb què s’enfronta Llenguatge de consulta estructurat . És una extensió de SQL i fins i tot podem utilitzar consultes SQL sense cap tipus de molèstia en cap aplicació o programa PL / SQL. En aquest tutorial de PL / SQL, revisarem detalladament els conceptes bàsics de PL / SQL. Els següents temes es tracten en aquest article.
- Què és PL / SQL?
- Estructures de blocs a PL / SQL
- Variables PL / SQL
- Funció a PL / SQL
- Procediment PL / SQL
- Bloc imbricat
- Declaració IF
- Declaració CASE
- Declaració de bucle
- Manipulació excepcional
Què és PL / SQL?
Significa extensió de llenguatge procedimental a llenguatge de consulta estructurat . Oracle ha creat PL / SQL que amplia algunes limitacions de SQL per proporcionar una solució més completa per a la creació d'aplicacions de missió crítica que s'executen a l'oracle .
Característiques
PL / SQL proporciona la funcionalitat d’un llenguatge de procediment com ara la presa de decisions, la iteració, etc.
Mitjançant una sola ordre, PL / SQL pot executar diverses consultes.
com trobar palíndrom a Java
També podem reutilitzar unitats PL / SQL, com ara funcions, activadors, procediments, etc. que s’emmagatzemen a la base de dades després de la creació.
PL / SQL també té un bloc de manipulació d’excepcions que gestiona les excepcions de PL / SQL.
També es pot fer una comprovació exhaustiva d’errors mitjançant PL / SQL
Les aplicacions escrites en PL / SQL són portables per a altres maquinaris i sistemes operatius sempre que Oracle hagi de ser operatiu.
PL / SQL vs SQL
SQL | PL / SQL |
SQL és una consulta única que s’utilitza per realitzar operacions DDL i DML | PL / SQL és un bloc de codis que s'utilitza per definir tot un programa o procediment / funció, etc. |
Realment no defineix com cal fer les coses, sinó que defineix què cal fer | PL / SQL defineix com cal fer les coses |
Executa una única sentència | Executa un bloc de sentències alhora. |
SQL s’utilitza principalment per manipular les dades | PL / SQL, en canvi, s’utilitza per crear aplicacions |
No pot contenir codi PL / SQL | Com que és una extensió SQL, pot contenir codi SQL |
Estructures de blocs a PL / SQL
Normalment, PL / SQL organitza el codi en blocs. El bloc de codi sense nom es coneix com a bloc anònim. Es coneix com a bloc anònim perquè no es desa a la base de dades d’oracle. Vegem un bloc anònim a PL / SQL.
[DECLARAR] declaracions declaracions [COMENÇAR] declaracions d'execució [EXCEPCIÓ] declaracions d'excepció END /
Veient el diagrama que es mostra més amunt, podem veure que l’estructura de blocs es divideix en quatre parts, és a dir, declaració, inici, excepció i final. Intentem entendre com funciona l'estructura de blocs a PL / SQL. De totes aquestes seccions, la secció d'execució és obligatòria i la resta són opcionals.
La persona s'utilitza la paraula clau per a la secció de declaració s'utilitza per declarar tipus de dades i estructures com ara variables, funcions, etc.
COMENÇA La paraula clau s'utilitza per a la secció d'execució. És obligatori i conté totes les sentències que cal executar. En aquest bloc es defineix la lògica empresarial, en aquest bloc podem utilitzar instruccions procedimentals o SQL.
El EXCEPCIÓ La paraula clau s'utilitza per a la secció d'excepció. Conté totes les sentències d’excepció.
FINAL la paraula clau marca el final del bloc i la barra inversa '/' indica a l'eina que utilitzeu (Oracle Database Tool) per executar el bloc PL / SQL.
Aquí teniu un exemple senzill per mostrar com podem utilitzar el codi PL / SQL.
COMENÇAR NULL END /
Ara que ja sabem com funciona l'estructura de blocs a PL / SQL, entenem els diversos aspectes de PL / SQL com declarar, nomenar i assignar valors a les variables.
Variables PL / SQL
La variable de PL / SQL és bàsicament un nom que varia o ubicació d’emmagatzematge temporal que admet un tipus de dades concret. Vegem com podem utilitzar les variables en un programa PL / SQL.
Regles de denominació variable
PL / SQL segueix les regles següents per anomenar variables.
La variable no pot tenir més de 31 caràcters
El nom de la variable ha de començar amb un caràcter ASCII. Com que PL / SQL distingeix entre majúscules i minúscules, les lletres majúscules i les minúscules seran variables diferents.
Després del primer caràcter, hi ha d’haver un caràcter especial ($, _) o qualsevol número.
Convenis de denominació
Utilitzeu les següents convencions de noms que s’enumeren a continuació per utilitzar les variables.
Prefix | Tipus de dades |
v_ | VARCHAR2 |
n_ | NOMBRE |
t_ | TAULA |
r_ | FILA |
d_ | DATA |
b_ | BOOLEAN |
Declaració
Intentem entendre com es fa la declaració de variables a PL / SQL
La declaració inclou el nom de la variable seguit del tipus de dades i separat per un punt i coma. A continuació es mostra un exemple per mostrar com es pot declarar una variable a PL / SQL.
DECLARAR v_name VARCHAR (25) n_age NUMBER (3) BEGIN NULL END
També podeu afegir la longitud del tipus de dades tal com hem fet a l’exemple anterior.
Ancoratges
L’àncora es refereix bàsicament a l’ús de la paraula clau% TYPE que per declarar una variable amb el tipus de dades associat al tipus de dades d’una columna d’una columna concreta d’una taula.
Mireu un exemple per entendre-ho. Suposem que tenim una taula EMPLEATS, podem utilitzar els ancoratges de la següent manera.
DECLARA v_name EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /
Tasca
L’assignació de variables és bastant senzilla, podem utilitzar l’operador d’assignació per assignar valors a una variable. L'exemple següent mostra com podem assignar valors a una variable.
DECLAREIX v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /
Inicialització
També podem inicialitzar un valor per a la variable a la secció de declaració. L'exemple següent mostra com podem inicialitzar valors a una variable.
DECLARA v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN NULL END /
Ara que sabem com podem treballar amb les variables, intentem comprendre com utilitzarem les funcions a PL / SQL.
Funció a PL / SQL
Una funció a PL / SQL és bàsicament un bloc anomenat que retorna un valor. També es coneix com a subrutina o subprograma, la sintaxi següent mostra com podem utilitzar les funcions a PL / SQL.
CREA FUNCIÓ [O SUBSTITUEIX] nom_funció [(paràmetre_1 [IN] [OUT] tipus_dades, paràmetre_2 [IN] [OUT] tipus_dades, paràmetre [IN] [OUT] tipus_dades] RETURN return_data_type IS BEGIN sentències return_data_type EXCEPTION END /
Primer de tot, heu d’especificar un nom de funció després de la paraula clau. El nom de la funció ha de començar amb un verb. Una funció pot tenir cap, un o més paràmetres que especifiquem als paràmetres. Hem d’especificar explícitament el tipus de dades de cada paràmetre i, a continuació, arriba el mode que pot fer qualsevol dels següents.
EN - El paràmetre IN és un paràmetre de només lectura.
Fora - És un paràmetre de només escriptura
DINS FORA - El paràmetre IN OUT és un paràmetre de lectura i escriptura.
Aquí teniu un exemple senzill per mostrar com fem servir les funcions a PL / SQL.
CREA O SUBSTITUEIX LA FUNCIÓ try_parse (iv_number A VARCHAR2) EL NOMBRE DE TORNADA ESTÀ COMENÇAT A TORNAR a_number (iv_number) EXCEPCIÓ QUAN altres LLAVORS TORNEN NULL FINAL
Cridar una funció
Intentem anomenar a la funció que hem fet en un bloc anònim a l'exemple següent.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_x number n_y number n_z number BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_x) DBMS n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /
També podem trucar a la funció en una sentència SELECT. Ara que ja sabem com podem utilitzar les funcions a PL / SQL, provem d’entendre com treballem amb els procediments a PL / SQL.
Procediment PL / SQL
Un procediment és bàsicament un bloc que realitza una tasca específica. Mitjançant un procediment podem embolicar o encapsular lògica empresarial complexa i reutilitzar-les tant a la capa d’aplicacions com a la base de dades.
Vegem un exemple senzill per entendre com funciona el procediment a PL / SQL
CREA O SUBSTITUEIX PROCEDIMENT adjust_salary (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent IN NUMBER) ESTÀ COMENÇANT - actualitza el salari dels empleats ACTUALITZA els empleats SET salari = salari + salari * in_percent / 100 WHERE employee_id = in_employee_id END
A l'exemple anterior, tenim dos paràmetres: el procediment ajusta el salari en un percentatge determinat i la paraula clau UPDATE actualitza el valor de la informació salarial.
Capçalera del procediment
La secció anterior a la paraula clau IS s’anomena capçalera del procediment. A continuació, es detallen alguns consells que cal conèixer al treballar els procediments.
esquema - És el nom opcional de l'esquema al qual pertany el procediment.
nom - El nom del procediment que hauria de començar amb un verb.
paràmetres - És la llista de paràmetres opcional.
AUTHID - Determina si el procediment s’executarà amb el privilegi de l’usuari actual o del propietari original del procediment.
Procedurergan de procediment
Tot el que ve després de la paraula clau IS es denomina cos del procediment. Tenim les declaracions de declaració, excepció i execució al cos del procediment. A diferència de la funció, la paraula clau RETURN d'un procediment s'utilitza per aturar l'execució i retornar el control a la persona que truca.
Cridant un procediment
Vegem com podem anomenar un procediment a PL / SQL.
Nom_procediment EXEC (param1, param2 i hellipparamN)
Podem trucar als procediments sense paràmetres només amb la paraula clau EXEC i el nom del procediment. Ara que sabem com podem treballar amb els procediments, intentem comprendre com s’utilitzen els blocs imbricats a PL / SQL.
Bloc imbricat
Un bloc imbricat no és res més que una combinació d’un o més blocs PL / SQL per obtenir un millor control sobre l’execució i un maneig excepcional del programa.
Aquí teniu un exemple senzill de bloc niat.
SET serveroutput A MIDA 1000000 La persona n_emp_id EMPLOYEES.EMPLOYEE_ID% TIPUS: = & emp_id1 BEGIN La persona n_emp_id employees.employee_id% TIPUS: = & emp_id2 v_Name employees.first_name% TIPUS DE COMENÇAR nom cognom SELECT INTO v_Name dels empleats ON employee_id = n_emp_id DBMS_OUTPUT.PUT_LINE ( 'Nom de l’empleat '|| n_emp_id ||' és '|| v_name) EXCEPCIÓ QUAN no_data_found THEN DBMS_OUTPUT.PUT_LINE (' Employee '|| n_emp_id ||' not found ') END END /
El bloc PL / SQL exterior de l’exemple anterior es coneix com a bloc pare o bloc que conté; el bloc interior, en canvi, es coneix com a bloc fill o bloc tancat.
No és una bona idea fer servir les variables amb els mateixos noms als dos blocs perquè durant l'execució la variable de bloc fill substituirà la variable de bloc pare. Succeeix perquè PL / SQL dóna la primera prioritat a la variable dins del seu propi bloc.
Etiqueta de bloc
Podem superar aquest problema amb l’etiqueta de bloc que ens ajuda a fer referències a variables dins dels blocs mitjançant una etiqueta.
Aquí teniu un exemple senzill per mostrar com podem utilitzar una etiqueta de bloc.
<>DECLARA ... COMENÇA ... FI
L’ús d’una etiqueta de blocs ajuda a millorar la llegibilitat del codi, obtenir un millor control i fer referències als blocs. Ara que ja sabem com podem treballar amb blocs imbricats, provem d’entendre com funciona la DECLARACIÓ IF a PL / SQL.
Declaració IF
PL / SQL té tres ENunciats IF
SI LLAVORS - És la declaració IF més simple si la condició és certa, les sentències s'executaran; si la condició és falsa, no fa res.
IF-THEN-ELSE - En això, s’afegeix la clàusula ELSE per a una seqüència alternativa d’afirmacions.
IF-THEN-ELSEIF - Ens permet executar múltiples condicions de prova en una seqüència.
Sintaxi IF-THEN
Condició IF THEN seqüència_de_estats ACABA IF
Sintaxi IF-THEN-ELSE
Condició IF THEN seqüència_de_instruccions ELSE seqüència_de_else_instruccions FINALITZACIÓ IF
Sintaxi IF-THEN-ELSEIF
IF condició1 THEN seqüència_de_estats1 ELSIF condició2 THEN seqüència_de_estats2 ELSE seqüència_de_estats3 END IF
Ara que hem acabat amb la DECLARACIÓ IF, vegem la sentència CASE a PL / SQL.
Declaració CASE
La sentència CASE ajuda bàsicament a executar una seqüència d’instruccions basada en un selector. Un selector, en aquest cas, pot ser qualsevol cosa, pot ser una variable, una funció o una expressió simple. Aquí teniu un exemple senzill per mostrar la sintaxi de la sentència CASE a PL / SQL.
[<>] CAS [TRUE | selector] QUAN expressió1 DESPRÉS seqüència_de_estats1 QUAN expressió2 DESPRÉS seqüència_de_estats2 ... QUAN expressióN DESPRÉS seqüència_de_estatsN [ELSE seqüència_de_estatsN + 1] CAS FINAL [nom_etiqueta]
A la sintaxi anterior, apareix el selector després de la paraula clau CASE. PL / SQL avaluarà el selector només una vegada per determinar quina sentència cal executar.
Seguit del selector hi ha la paraula clau WHEN. Si l'expressió compleix el selector, s'executa la sentència corresponent després de THEN paraula clau.
Ara que sabem com podem utilitzar una sentència CASE, intentem comprendre com utilitzarem les sentències de bucle al PL / SQL.
Declaració de bucle
Una sentència de bucle a PL / SQL és una sentència iterativa que us permet executar una seqüència d’instruccions diverses vegades. Aquí teniu un exemple senzill per mostrar la sintaxi d’una sentència de bucle a PL / SQL.
LOOP seqüència_de_estats END LOOP
Hi ha d’haver com a mínim una sentència executable entre la paraula clau LOOP i END LOOP.
Bucle amb l'extracte EXIT
Les sentències EXIT i EXIT when us permeten sortir del bucle. La sentència EXIT WHEN finalitza el bucle de manera condicional mentre que EXIT finalitza l'execució de forma incondicional.
LOOP ... SURT QUAN la condició acabi LOOP
Etiqueta de bucle
S'utilitza una etiqueta de bucle per qualificar el nom de la variable de comptador de bucle quan s'utilitza en un bucle imbricat. A continuació es mostra la sintaxi d’una etiqueta de bucle.
<>LOOP seqüència_de_estats Etiqueta END LOOP
Ara que ja sabem com podem utilitzar les sentències de bucle, fem una ullada a les sentències de bucle mentre per a una millor comprensió.
Declaració de Loop
Podem utilitzar la sentència de bucle WHILE quan no es defineix el nombre d’execucions fins que no comença l’execució. La sintaxi següent s'utilitza per a una sentència de bucle WHILE a PL / SQL.
MENTRE condició LOOP seqüència_de_estats END LOOP
La condició de la sintaxi és un valor o expressió booleana que avalua ser TRUE, FALSE o NULL. Si la condició és TRUE, les sentències s'executaran, si és FALS, l'execució s'atura i el control passa a la següent instrucció executable.
Ara que sabem com podem utilitzar una instrucció de bucle WHILE, fem una ullada a la sentència de bucle FOR.
Per a la declaració de bucle
Una sentència de bucle FOR a PL / SQL ens permet executar una seqüència d’instruccions un nombre determinat de vegades. A continuació es mostra la sintaxi per utilitzar la sentència de bucle FOR a PL / SQL
PER bucle_counter A [REVERSAR] lower_bound .. lower_bound LOOP seqüència_de_instruccions END LOOP
PL / SQL crea una variable local loop_counter automàticament amb un tipus de dades INTEGER per al bucle, de manera que no haureu de declarar-ho explícitament. El límit inferior..el límit superior és l'interval sobre el qual itera el bucle. A més, heu de tenir com a mínim una sentència executable entre les paraules clau LOOP i END LOOP.
Ara que ja sabem com podem utilitzar les sentències de bucle a PL / SQL, donem una ullada al tractament excepcional de PL / SQL.
Manipulació excepcional
A PL / SQL qualsevol tipus d’error es tracta com una excepció. Una excepció es pot tractar com una condició especial que pot canviar o alterar el flux d'execució. A PL / SQL, hi ha dos tipus d’excepcions.
Excepció del sistema: El temps d'execució PL / SQL l'augmenta quan detecta un error.
Excepció definida pel programador - Aquestes excepcions les defineix el programador en una aplicació específica.
Definició d'una excepció
Cal declarar una excepció a PL / SQL abans de poder plantejar-la. Podem definir l'excepció mitjançant la paraula clau EXCEPTION tal com hem fet a l'exemple següent.
EXCEPTION_NAME EXCEPTION
Per generar una excepció, fem servir la paraula clau RAISE.
APLEGA EXCEPTION_NAME
Per tant, tot això tractava de PL / SQL, espero que aquest article us hagi ajudat a afegir valor al vostre coneixement. Per obtenir més informació sobre SQL o bases de dades, podeu consultar la nostra llista de lectura completa aquí: .
Si voleu obtenir una formació estructurada sobre MySQL, consulteu el nostre que inclou formació en directe dirigida per un instructor i experiència en projectes reals. Aquesta formació us ajudarà a entendre en profunditat MySQL i us ajudarà a dominar el tema.
Tens alguna pregunta? Esmenteu-lo a la secció de comentaris de ' Tutorial PL / SQL ”I em posaré en contacte amb vosaltres.