pl sql operators control statements tutorial
Obteniu informació sobre els diferents operadors PL SQL i declaracions de control, com if-then-else, for loop, while loop, etc., amb exemples de codi de mostra:
A la Ordres PL / SQL tutorial del Sèrie PL / SQL , vam aprendre sobre ordres PL SQL INSERT, UPDATE, DELETE i SELECT amb exemples de programació.
En aquest article, analitzarem els diferents operadors que admet PL / SQL, com ara operadors relacionals, lògics, aritmètics i de comparació. També investigarem les declaracions de control que s’utilitzen àmpliament a PL / SQL.
La condició PL / SQL i les estructures iteratives s’han explicat amb detall amb exemples aquí en aquest tutorial.
ressenyes del convertidor en línia de youtube a mp3
Què aprendreu:
Operadors PL SQL
Un operador PL SQL dirigeix el compilador a fer operacions lítiques i aritmètiques amb l'ajut d'un símbol.
Per defecte, PL / SQL té els tipus d'operador següents:
- Aritmètica
- Comparació
- Lògic
- Corda
- Relacional
# 1) Operadors aritmètics
Símbol | Descripció | |
---|---|---|
7 | I | conjunció |
+ | Realitza la suma de dos operands. | |
* | Realitza la multiplicació de dos operands. | |
/ | Realitza la divisió de dos operands. | |
- | Realitza la resta de dos operands. | |
** | Realitza una operació exponencial. |
Implementació de codi amb operadors aritmètics:
declare a number(5):= 2; b number(5):= 1; res number(10); sub number(10); mul number(10); div number(10); exp number(10); begin -- adding a and b and storing in res res:= a+b; -- subtracting b from a and storing in sub sub:= a-b; -- multiplying a and b and storing in mul mul:= a*b; -- dividing a and b and storing in div div:= a/b; -- exponential operation and storing in exp exp:= a**b; dbms_output.put_line('Sum value is '||res); dbms_output.put_line('Subtraction value is '||sub); dbms_output.put_line('Multiplication value is '||mul); dbms_output.put_line('Division value is '||div); dbms_output.put_line('Exponential value is '||exp); end; /
La sortida del codi anterior hauria de ser:
# 2) Operadors relacionals
Aquests operadors realitzen els valors de comparació i de retorn en booleà.
Serial No. | Símbol | Descripció |
---|---|---|
1 | > | Verifica si el valor de l’operand esquerre és superior al dret. |
2 | < | Verifica si el valor de l’operand dret és superior a l’esquerra. |
3 | > = | Verifica si el valor de l’operand esquerre és superior a igual a dret. |
4 | <= | Verifica si el valor de l’operand dret és superior a l’esquerra. |
5 | = | Verifica si dos operands són iguals. |
6 | ! =, ~ =, | Verifica si dos operands no són iguals. |
Implementació de codi amb operadors relacionals:
DECLARE a NUMBER := 5; b NUMBER := 12; BEGIN IF a != b THEN DBMS_OUTPUT.PUT_LINE('a is not equal to b'); ELSIF a = b THEN DBMS_OUTPUT.PUT_LINE('a is equal to b'); ELSE DBMS_OUTPUT.PUT_LINE ('Not sure of the input'); END IF; END; /
La sortida del codi anterior hauria de ser:
# 3) Operadors de comparació
Aquest operador dóna la sortida com a valor vertader, fals o nul basat en el resultat de comparar una afirmació amb l’altra.
Símbol | Descripció |
---|---|
ENTRE | Verifica si un valor es troba en un interval. |
IN | Verifica si un valor és igual a un conjunt de membres. |
M'AGRADA | Verifica si una cadena o un caràcter és similar a un patró. |
ESTÀ NUL | Verifica si un operant és igual al valor Nul. |
Implementació de codi amb operador de comparació:
DECLARE i INTEGER; -- NULL value is set by default BEGIN i := i*5; -- i is still NULL since NULL * 5 is NULL IF i IS NULL THEN DBMS_OUTPUT.PUT_LINE('i is NULL.'); END IF; END; /
La sortida del codi anterior hauria de ser:
# 4) Operadors lògics
PL / SQL admet més d’un operador lògic. Actuen sobre operands de naturalesa booleana i també donen resultats booleans.
Serial No. | Símbol | Descripció |
---|---|---|
1 | NO | Conegut com a NO lògic. Si el resultat és cert, NO el fa fals. |
2 | I | Conegut com AND lògic. Si tots els operands són certs, el resultat és cert. |
3 | O | Conegut com a OR lògic. Si algú dels operands és cert, el resultat és cert. |
Implementació de codi amb operadors lògics:
declare n1 number := 5; n2 number := 10; n3 number := 15; begin if (n1 n2 or n1 = 5) then dbms_output.put_line ('The condition is true'); else dbms_output.put_line ('The condition is false'); end if; end; /
La sortida del codi anterior hauria de ser:
Precedència de l'operador
La prioritat de l'operador PL SQL s'estableix per definir com s'ha de fer una operació que impliqui un o diversos operadors o més d'un operand. Els operadors amb una precedència més alta es calculen primer que els altres mentre que els operadors amb la mateixa precedència es manipulen en cap seqüència particular.
A la taula següent es detallen els operadors de la prioritat alta a baixa.
Serial No. | Símbol | Descripció |
---|---|---|
1 | ** | operació exponencial |
2 | +, - | suma, resta |
3 | *, / | multiplicació, divisió |
4 | +, -, || | suma, resta, concatenació |
5 | operadors de comparació | |
6 | NO | negació |
8 | O | inclusió |
Instruccions de control a PL / SQL
Les estructures de control a PL / SQL consisteixen en estructures de programes com el iteració, seqüència, i selecció . La forma de selecció verifica una condició i, a continuació, basant-se en els resultats de vertader o fals, processa el següent bloc de codi per ordre.
La forma d'iteració executa repetidament un bloc de codi o sentències fins que la condició sigui vàlida. Finalment, la forma de seqüència processa les afirmacions una per una en l’ordre en què estan presents.
Declaració de condició a PL SQL
En els escenaris de presa de decisions, s’utilitzen les sentències de condició com IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF i CASE.
# 1) SI-ALeshores: Aquesta és una de les formes bàsiques d’enunciats IF. Conté un bloc de codi amb les paraules clau ENDIF i THEN. Si el resultat d'una condició és cert, el següent bloc de codi s'executa en cas contrari.
Estructura de IF-THEN:
IF condition THEN Block of code END IF;
També podem mantenir un petit bloc IF-THEN en una sola línia com aquesta.
IF big > small THEN temp: = big; END IF;
Implementació del codi amb IF-THEN:
DECLARE i number(10,2) := 15; BEGIN -- checking the condition IF( i > 2 ) THEN -- true condition dbms_output.put_line('i is greater than 1 ' ); END IF; dbms_output.put_line('the numeric value of i is '|| i); END; /
La sortida del codi anterior hauria de ser:
# 2) SI-DESPRÉS: Aquesta és la següent forma de sentència IF que té la paraula clau ELSE i el següent bloc de codi. Aquest bloc d’instruccions ELSE és opcional i s’executa quan la condició és FALS.
Estructura de IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implementació de codi amb IF-THEN-ELSE:
DECLARE num number(10,2) := 150; BEGIN -- checking the condition IF( num > 100 ) THEN -- true condition dbms_output.put_line('num is greater than 100 '); ELSE dbms_output.put_line('num is lesser than 100 '); END IF; dbms_output.put_line('value of number is : ' || num); END; /
La sortida del codi anterior hauria de ser:
# 3) IF-THEN-ELSIF: Aquesta afirmació condicional ofereix l'opció de seleccionar entre les alternatives. ELSE ... El bloc de codi ELSE pot venir opcionalment després de la sentència IF-THEN. Per tant, s'utilitza quan es tracta de múltiples opcions mútuament exclusives.
Un bloc de codi IF-THEN no pot tenir cap o diversos ELSIF sempre que apareguin abans de la sentència ELSE. Un cop trobem una condició real en un bloc ELSIF, s'ignoraran altres ELSE o ELSIF.
Estructura de IF-THEN-ELSIF:
IF condition 1 THEN Block of code 1 ELSIF condition 2 THEN Block of code 2 ELSE Block of code 3 END IF;
Implementació de codi amb IF-THEN-ELSIF:
DECLARE num number(8,2) := 20; BEGIN IF ( num <15 ) THEN dbms_output.put_line('The num is greater than 15' ); ELSIF ( num = 15 ) THEN dbms_output.put_line('The num is 15' ); ELSIF ( num <= 20 ) THEN dbms_output.put_line('The num is less than equal to 20'); ELSE dbms_output.put_line('The num is invalid '); END IF; dbms_output.put_line('The num is : '|| num); END; /
La sortida del codi anterior és:
# 4) EXPOSICIÓ DE CAS: Aquesta sentència condicional seleccionarà un bloc de codi entre les opcions. Tanmateix, com les sentències IF, CASE no utilitza l'entrada booleana, sinó una expressió que ajuda a seleccionar una de les opcions.
La darrera opció de la sentència CASE és la predeterminada. L'EXPOSICIÓ DE CAS és més eficient i menys llarga en comparació amb les declaracions IF.
Estructura de la DECLARACIÓ DE CAS:
CASE selector WHEN 'condition 1' THEN block of code 1; WHEN 'condition2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementació del codi amb DECLARACIÓ DE CAS:
DECLARE age number(5) := 15; BEGIN CASE age when '1' then dbms_output.put_line('Infant'); when '5' then dbms_output.put_line('In school'); when '15' then dbms_output.put_line('High school'); else dbms_output.put_line('Qualified for class 10 '); END CASE; END; /
La sortida del codi anterior és:
# 5) Declaració de CAS CERCAT: Aquesta afirmació condicional no té cap selector i el bloc de codi WHEN només proporciona resultats booleans i no cap valor d'altres tipus de dades.
Estructura de la declaració CASE BUSCAT:
CASE WHEN 'condition 1' THEN block of code 1; WHEN 'condition 2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementació del codi amb sentència SEARCHED CASE:
DECLARE model varchar(10) := '4'; BEGIN case when model = '1' then dbms_output.put_line('FIAT'); when model = '2' then dbms_output.put_line('TOYOTA'); when model = '3' then dbms_output.put_line('MARUTI'); when model = '4' then dbms_output.put_line('HYUNDAI'); else dbms_output.put_line('Premium MODEL'); end case; END; /
La sortida del codi anterior hauria de ser:
# 6) ANIDATS SI-DESPRÉS: Aquesta afirmació condicional proporciona la previsió d’utilitzar el bloc ELSE IF o IF dins d’un altre IF o ELSE IF.
Estructura de NIDED IF-THEN-ELSE:
IF condition 1 THEN Block of code 1 IF condition 2 THEN Block of code 2 END IF; ELSE Block of code 3 when condition 1 is false END IF;
Implementació de codi amb NESTED IF-THEN-ELSE:
DECLARE i number(10,2) := 65; j number(5) := 10; BEGIN -- checking the condition IF( i > 50 ) THEN -- if true move to the next IF statement IF( j <15 ) THEN dbms_output.put_line('In the nested if block' ); END IF; END IF; dbms_output.put_line('The value of first number is : ' || i ); dbms_output.put_line('The value of second number is : ' || j ); END; /
La sortida del codi anterior hauria de ser:
Declaració iterativa a PL SQL
Mentre implementem la lògica a PL / SQL, és possible que necessitem processar un bloc de codi diverses vegades. Això s’aconsegueix amb l’ajut de declaracions LOOP. Aquests són de tres tipus, FOR-LOOP, WHILE-LOOP i LOOP.
# 1) PL SQL LOOPS
Un LOOP té una estructura bàsica de la següent manera:
LOOP Block of code END LOOP;
Després de cada iteració, el flux del programa apunta cap a la part superior del bucle fins que es compleixi una determinada condició. En cas que vulguem sortir del bucle a causa d’una situació, en aquest cas es pot utilitzar una sentència EXIT.
# 2) PL SQL MENTRE LOOP
Aquest bucle executarà un bloc de codi diverses vegades fins que la condició sigui vàlida. Al començament de cada iteració, es comprova l'estat del bucle. Si es compleix, s'executa el bloc de codi.
Si la condició és nul·la o no es compleix, s’evita el bucle i s’executa el següent bloc de codi.
Estructura de WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implementació de codi amb WHILE LOOP:
DECLARE num number(10,1) := 3; BEGIN WHILE num <4 LOOP dbms_output.put_line('The value of number: ' || num); num := num + 1; END LOOP; END; /
La sortida del codi anterior hauria de ser:
# 3) PL SQL PER LOOP
Aquest tipus de bucle permet l'execució d'un bloc de codi un nombre determinat de vegades. El pas inicial s'executa una vegada. S'utilitza principalment per a la inicialització i declaració de les variables de bucle. A continuació, es comproven els valors del límit (rang inicial i final). Si es compleix la condició, s'executarà el bloc de codi dins del LOOP. Si no, el flux del programa es mou al següent bloc de codi després del bucle.
Després d'una iteració, el comptador de bucle augmenta o disminueix en un. Tot el procés continua fins que es compleix la condició del bucle. A mesura que la condició es converteix en FALSA, el bucle finalitza.
A PL / SQL, l'interval inicial i final del bucle es pot canviar en temps d'execució. El comptador del bucle ha de ser un nombre enter, un nombre, etc. (que es pot augmentar o disminuir numèricament). El valor inicial de la variable de comptador pot ser qualsevol número.
Estructura de FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implementació del codi de FOR LOOP:
DECLARE num number(10,1); BEGIN FOR num in 1.. 5 LOOP dbms_output.put_line('The num is:' || num); END LOOP; END; /
La sortida del codi anterior hauria de ser:
# 4) LLAÇ NIDAT
Aquest tipus d’instruccions permeten un bucle sobre l’altre. L'estructura del bucle extern i intern pot ser del mateix o de diferents tipus. Després de cada recorregut, els dos bucles han de funcionar correctament.
Estructura del bucle imbricat:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implementació de codi amb NESTED LOOP:
BEGIN FOR i IN 1..2 LOOP FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
La sortida del codi anterior hauria de ser:
Etiquetes de bucle a PL / SQL
A PL / SQL, disposem d’etiquetar els bucles, cosa que augmenta la llegibilitat i el significat del codi. L'etiqueta està representada per claudàtors dobles ( << i >> ) i s’esmenten a la part superior de la declaració LOOP. L'etiqueta també es pot col·locar al final del bucle.
L'etiqueta també es pot descriure per a sentències EXIT quan surt del bucle.
Estructura de les ETIQUETES:
<> LOOP Block of Code END LOOP;
Implementació de codi amb LOOP LABEL:
BEGIN <> FOR i IN 1..2 LOOP <> FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Instruccions de control de seqüències
La instrucció de control s'utilitza per modificar el flux d'execució del programa.
# 1) SORTIR
Una sentència EXIT trenca un bucle explícitament. Quan EXIT es troba al bucle, el bucle es trenca i el flux del programa passa al següent bloc de codi. En les condicions en què estem utilitzant bucles imbricats, la sentència EXIT primer acabarà el bucle intern i després executarà el bloc de codi que apareix immediatament després.
Implementació de codi amb EXIT:
DECLARE num number(10,1) := 15; BEGIN -- loop condition WHILE num <20 LOOP dbms_output.put_line ('The num is: ' || num); num := num + 1; IF mod(num, 2) = 0 THEN -- exit from loop EXIT; END IF; END LOOP; END; /
La sortida del codi anterior hauria de ser:
# 2) CONTINUAR
Aquesta instrucció de control permet que el bucle surti i passi a la següent iteració que tingui lloc.
Implementació de codi amb CONTINUE:
DECLARE num number(10,1) := 5; BEGIN -- while loop execution WHILE num <9 LOOP dbms_output.put_line ('The number is : ' || num); num := num + 1; IF mod(num,2) = 0 THEN num := num + 1; CONTINUE; END IF; END LOOP; END; /
La sortida del codi anterior hauria de ser:
# 3) GOTO
La sentència GOTO mou el control a un bloc de codi etiquetat únic de forma incondicional. No és una bona tècnica de programació utilitzar instruccions GOTO perquè redueix la llegibilitat i la traçabilitat del codi.
Estructura de GOTO:
GOTO 60; .. .. <> Block of code 1;
Implementació de codificació amb la declaració GOTO:
BEGIN GOTO message_two; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Tutorial' ); GOTO message_third; <> DBMS_OUTPUT.PUT_LINE( 'Software Test Help!' ); GOTO message_one; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Control Statement' ); END;
La sortida del codi anterior hauria de ser:
Preguntes freqüents
Q # 1) Quina és la declaració de control a PL / SQL?
Resposta: Les sentències de control de PL / SQL són dels tres tipus: sentències de bucle, sentències seqüencials i sentències de control. L'instrucció de bucle consisteix en WHILE LOOP, FOR LOOP i LOOP bàsic.
Q # 2) Com es verifica la igualtat a PL / SQL?
Resposta: A PL / SQL, tenim l’operador d’igualtat que verifica la igualtat.
Per exemple,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
P # 3) Com atureu un bucle infinit a PL / SQL?
Resposta: Podem aturar un bucle infinit a PL / SQL amb l'ajut de sentències EXIT. Hem de mantenir les sentències EXIT dins del bucle i no fora del bucle.
Q # 4) Quin és el propòsit de l'estructura de control condicional a PL / SQL?
Resposta: L'estructura de control condicional ofereix l'opció de controlar el flux del programa en funció d'alguns criteris. Per tant, el codi del programa no s'executa de forma seqüencial. S’executa un bloc de codi en funció de la condició.
P # 5) Quins són els 6 operadors relacionals?
Resposta: Els operadors relacionals de PL / SQL són =,,! =, ==.
P # 6) Quins són els diferents tipus d'operadors?
Resposta: A continuació es detallen els diferents tipus d'operadors de PL / SQL:
- Operadors de bits
- Operadors de tasques
- Operadors aritmètics
- Operadors relacionals
- Operadors lògics
Conclusió
Hem tractat una gran part de PL / SQL en aquest tutorial que tracta temes com els múltiples operadors i la seva importància amb exemples de codi.
També hem explorat detalladament les declaracions de control PL SQL. Les instruccions de control consisteixen en les estructures del programa com la iteració, la condició i la seqüència.
En el següent tutorial, analitzarem els procediments, funcions, cursors i molts temes relacionats de PL SQL.
Lectura recomanada
- Tutorial PL SQL per a principiants amb exemples | Què és PL / SQL
- Operadors de Python
- Enunciats condicionals Unix: si és així i operadors relacionals
- Instruccions de control de Python (Python Continue, Break and Pass)
- Tutorial sobre declaracions condicionals de C #
- Control de fonts o control de versions a DevOps (Tutorial de vídeo part 2 - bloc 2)
- Bucles a C #: declaracions de control i diversos bucles amb exemples
- Tutorial SVN de tortuga: revisions al dipòsit de codis