pl sql operators control statements tutorial
Aflați despre diferiți operatori PL SQL și instrucțiuni de control, cum ar fi if-then-else, pentru buclă, în timp ce buclă, etc., cu exemple de coduri exemple:
În Comenzi PL / SQL tutorial de Seria PL / SQL , am aflat despre comenzile PL SQL INSERT, UPDATE, DELETE și SELECT cu exemple de programare.
În acest articol, vom discuta despre diferiții operatori pe care PL / SQL îi suportă, cum ar fi operatorii relaționali, logici, aritmetici și de comparație. De asemenea, vom investiga declarațiile de control care sunt utilizate pe scară largă în PL / SQL.
Condiția PL / SQL și structurile iterative au fost explicate în detaliu cu exemple aici în acest tutorial.
cel mai bun detergent pentru PC pentru Windows 7
Ce veți învăța:
Operatori PL SQL
Un operator PL SQL îndrumă compilatorul să facă operații aritmetice și logice cu ajutorul unui simbol.
În mod implicit, PL / SQL are următoarele tipuri de operatori:
- Aritmetic
- Comparaţie
- Logic
- Şir
- Relațional
# 1) Operatori aritmetici
Simbol | Descriere | |
---|---|---|
7 | ȘI | conjuncție |
+ | Efectuează adăugarea a doi operanzi. | |
* | Efectuează multiplicarea a doi operanzi. | |
/ | Efectuează împărțirea a doi operanzi. | |
- | Efectuează scăderea a doi operanzi. | |
** | Efectuează operație exponențială. |
Implementarea codului cu operatori aritmetici:
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; /
Ieșirea codului de mai sus ar trebui să fie:
# 2) Operatori relaționali
Acești operatori efectuează comparația și returnează valorile în Boolean.
Nr. De serie | Simbol | Descriere |
---|---|---|
unu | > | Verifică dacă valoarea operandului stâng este mai mare decât dreapta. |
Două | < | Verifică dacă valoarea operandului din dreapta este mai mare decât stânga. |
3 | > = | Verifică dacă valoarea operandului stâng este mai mare decât egală cu dreapta. |
4 | <= | Verifică dacă valoarea operandului din dreapta este mai mare decât egală cu stânga. |
5 | = | Verifică dacă doi operanzi sunt egali. |
6 | ! =, ~ =, | Verifică dacă doi operanzi nu sunt egali. |
Implementarea codului cu operatori relaționali:
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; /
Ieșirea codului de mai sus ar trebui să fie:
# 3) Operatori de comparație
Acest operator oferă ieșirea ca valoare adevărată, falsă sau nulă pe baza rezultatului comparării unei afirmații cu cealaltă.
Simbol | Descriere |
---|---|
ÎNTRE | Verifică dacă o valoare se află într-un interval. |
ÎN | Verifică dacă o valoare este egală cu un set de membri. |
CA | Verifică dacă un șir sau un caracter este similar cu un model. |
ESTE NUL | Verifică dacă un operand este egal cu valoarea Null. |
Implementarea codului cu operatorul de comparație:
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; /
Ieșirea codului de mai sus ar trebui să fie:
# 4) Operatori logici
PL / SQL acceptă mai mult de un operator logic. Aceștia acționează pe operanzi care sunt de natură booleană și produc și rezultate booleene.
Nr. De serie | Simbol | Descriere |
---|---|---|
unu | NU | Cunoscut ca NU logic. Dacă rezultatul este adevărat, atunci NU îl face fals. |
Două | ȘI | Cunoscut ca ȘI logic. Dacă toți operanzii sunt adevărați, rezultatul este adevărat. |
3 | SAU | Cunoscut ca SAU logic. Dacă cineva dintre operanzi este adevărat, rezultatul este adevărat. |
Implementarea codului cu operatori logici:
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; /
Ieșirea codului de mai sus ar trebui să fie:
Precedența operatorului
Prioritatea operatorului PL SQL este setată pentru a defini modul în care trebuie efectuată o operație care implică un singur sau mai mulți operatori sau mai mult de un operand. Operatorii cu prioritate mai mare sunt calculați mai întâi decât ceilalți, în timp ce operatorii cu aceeași prioritate sunt manipulați în nicio secvență specială.
Tabelul de mai jos listează operatorii de la prioritate mare la scăzută.
Nr. De serie | Simbol | Descriere |
---|---|---|
unu | ** | operație exponențială |
Două | +, - | adunare, scădere |
3 | *, / | multiplicare, divizare |
4 | +, -, || | adunare, scădere, concatenare |
5 | operatorii de comparație | |
6 | NU | negare |
8 | SAU | includere |
Instrucțiuni de control în PL / SQL
Structurile de control din PL / SQL constau din structurile programului precum iterație, secvență, și selecţie . Forma de selecție verifică o condiție, apoi pe baza rezultatelor adevărate sau false, procesează următorul bloc de cod în ordine.
Forma de iterație rulează în mod repetat un bloc de cod sau instrucțiuni până când condiția este validă. În cele din urmă, forma secvenței procesează afirmațiile unul câte unul în ordinea în care sunt prezente.
Declarație de condiție în PL SQL
În scenariile de luare a deciziilor, sunt utilizate declarațiile de condiții precum IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF și CASE.
# 1) Dacă-atunci: Aceasta este una dintre formele de bază ale declarațiilor IF. Conține un bloc de cod cu cuvinte cheie ENDIF și THEN. Dacă rezultatul unei condiții este adevărat, următorul bloc de cod se execută altfel nu.
Structura IF-THEN:
IF condition THEN Block of code END IF;
De asemenea, putem păstra un scurt bloc IF-THEN pe o singură linie ca aceasta.
IF big > small THEN temp: = big; END IF;
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
# 2) IF-THEN-ELSE: Aceasta este următoarea formă de instrucțiune IF care are cuvântul cheie ELSE, apoi următorul bloc de cod. Acest bloc de instrucțiuni ELSE este opțional și se execută atunci când condiția este FALSĂ.
Structura IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
# 3) IF-THEN-ELSIF: Această afirmație condițională oferă opțiunea de a selecta dintre alternative. ELSE ... ELSE blocul de cod poate veni opțional după declarația IF-THEN. Astfel, este utilizat în timp ce se ocupă de opțiuni multiple care se exclud reciproc.
Un bloc de cod IF-THEN nu poate avea niciunul sau mai multe ELSIF-uri cu condiția să apară în fața declarației ELSE. Odată ce întâlnim o condiție adevărată într-un bloc ELSIF, alte ELSE sau ELSIF vor fi ignorate.
Structura 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;
Implementarea codului cu 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; /
Ieșirea codului de mai sus este:
# 4) DECLARAȚIE DE CAZ: Această afirmație condițională va selecta un bloc de cod din opțiuni. Cu toate acestea, ca și declarațiile IF, CASE nu folosește intrarea booleană, ci o expresie care ajută la selectarea uneia dintre opțiuni.
Ultima alegere a declarației CASE este cea implicită. DECLARAȚIA DE CAZ este mai eficientă și mai puțin lungă în comparație cu declarațiile IF.
Structura DECLARAȚIEI DE CAZ:
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;
Implementarea codului cu DECLARAȚIE DE CAZ:
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; /
Ieșirea codului de mai sus este:
# 5) Declarație de caz căutat: Această afirmație condițională este lipsită de orice selector și blocul WHEN de cod oferă doar rezultate booleene și nu orice valoare a altor tipuri de date.
Structura declarației de caz CAUTAT:
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;
Implementarea codului cu declarația CAUTĂ CĂUTATĂ:
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; /
Ieșirea codului de mai sus ar trebui să fie:
# 6) ÎNCHIDAT DACĂ-ALTĂ: Această afirmație condiționată oferă prevederea utilizării blocului ELSE IF sau IF într-un alt IF sau ELSE IF.
Structura NEDED 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;
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
Declarație iterativă în PL SQL
În timp ce implementăm logica în PL / SQL, este posibil să avem nevoie să procesăm de mai multe ori un bloc de cod în mod repetat. Acest lucru se realizează cu ajutorul declarațiilor LOOP. Acestea sunt de trei tipuri, FOR-LOOP, WHILE-LOOP și LOOP.
# 1) PL SQL LOOPS
O LOOP are o structură de bază după cum urmează:
LOOP Block of code END LOOP;
După fiecare iterație, fluxul programului indică înapoi în partea de sus a buclei până când se îndeplinește o anumită condiție. În cazul în care dorim să ieșim din buclă din cauza unei situații, în acest caz, poate fi utilizată o instrucțiune EXIT.
# 2) PL SQL WHILE LOOP
Această buclă va rula un bloc de cod de mai multe ori până când condiția este valabilă. La începutul fiecărei iterații, se verifică starea buclei. Dacă este satisfăcut, blocul de cod este executat.
Dacă condiția este nulă sau nu este îndeplinită, bucla este evitată și următorul bloc de cod este executat.
Structura WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
# 3) PL SQL PENTRU LOOP
Acest tip de buclă permite executarea unui bloc de cod de un anumit număr de ori. Pasul de început se execută o singură dată. Aceasta este utilizată în principal pentru inițializarea și declararea variabilelor de buclă. Apoi sunt verificate valorile la graniță (intervalul de început și sfârșit). Dacă condiția este îndeplinită, blocul de cod din LOOP va fi executat. Dacă nu, fluxul programului se mută la următorul bloc de cod după buclă.
După o iterație, contorul buclei crește sau scade cu unul. Întregul proces continuă până când condiția buclei este satisfăcută. Pe măsură ce condiția devine FALSĂ, bucla se termină.
În PL / SQL, intervalul de început și de sfârșit al buclei poate fi modificat în timpul rulării. Contorul pentru buclă ar trebui să fie un număr întreg, număr și așa mai departe (care poate fi mărit sau micșorat numeric). Valoarea inițială a variabilei contorului poate fi orice număr.
Structura FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implementarea codului 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; /
Ieșirea codului de mai sus ar trebui să fie:
# 4) Buclă cuibărită
Acest tip de declarație permite o buclă peste cealaltă. Structura buclei externe și interne poate fi de același tip sau diferite. După fiecare traversare, ambele bucle trebuie să ruleze cu succes.
Structura buclei imbricate:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
Etichete buclă în PL / SQL
În PL / SQL, avem prevederea etichetării buclelor, ceea ce crește lizibilitatea și semnificația codului. Eticheta este reprezentată de paranteze unghiulare duble ( << și >> ) și sunt menționate în partea de sus a declarației LOOP. Eticheta poate fi plasată și la sfârșitul buclei.
Eticheta poate fi descrisă și pentru instrucțiunile EXIT în timp ce iese din buclă.
Structura ETICHETELOR:
<> LOOP Block of Code END LOOP;
Implementarea codului cu 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; /
Declarații de control al secvenței
Instrucțiunea de control este utilizată pentru a modifica fluxul de execuție al programului.
# 1) IEȘIRE
O instrucțiune EXIT rupe în mod explicit o buclă. Când EXIT este găsit în buclă, bucla se întrerupe și fluxul programului se mută la următorul bloc de cod. În condițiile în care folosim bucle imbricate, instrucțiunea EXIT va termina mai întâi bucla interioară și apoi va executa blocul de cod care apare imediat după ea.
Implementarea codului cu 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; /
Ieșirea codului de mai sus ar trebui să fie:
# 2) CONTINUAȚI
Această instrucțiune de control permite ieșirea buclei și trecerea la următoarea iterație care va avea loc.
Implementarea codului cu CONTINUAȚI:
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; /
Ieșirea codului de mai sus ar trebui să fie:
# 3) GOTO
Instrucțiunea GOTO mută controlul într-un bloc unic de cod etichetat necondiționat. Nu este o tehnică bună de programare pentru a utiliza instrucțiunile GOTO, deoarece reduce lizibilitatea și trasabilitatea codului.
Structura GOTO:
GOTO 60; .. .. <> Block of code 1;
Implementarea codării cu declarația 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;
Ieșirea codului de mai sus ar trebui să fie:
întrebări frecvente
Q # 1) Care este declarația de control din PL / SQL?
Răspuns: Instrucțiunile de control din PL / SQL sunt de trei tipuri - instrucțiuni de buclă, instrucțiuni secvențiale și instrucțiuni de control. Instrucțiunea buclă constă din WHILE LOOP, FOR LOOP și LOOP de bază.
Q # 2) Cum verificați egalitatea în PL / SQL?
Răspuns: În PL / SQL, avem operatorul de egalitate care verifică egalitatea.
De exemplu,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
Q # 3) Cum opriți o buclă infinită în PL / SQL?
Răspuns: Putem opri o buclă infinită în PL / SQL cu ajutorul instrucțiunilor EXIT. Trebuie să păstrăm instrucțiunile EXIT în buclă și nu în afara buclei.
Q # 4) Care este scopul structurii de control condiționat din PL / SQL?
Răspuns: Structura de control condițional oferă opțiunea de a controla fluxul programului în funcție de anumite criterii. Astfel, codul din program nu rulează în ordine. Un bloc de cod este executat pe baza condiției.
Q # 5) Care sunt cei 6 operatori relaționali?
Răspuns: Operatorii relaționali ai PL / SQL sunt =,,! =, ==.
Q # 6) Care sunt diferitele tipuri de operatori?
Răspuns: Diferitele tipuri de operatori din PL / SQL sunt enumerate mai jos:
- Operatori Bitwise
- Operatori de misiune
- Operatori aritmetici
- Operatori relaționali
- Operatori logici
Concluzie
Am acoperit o mare parte din PL / SQL în acest tutorial care tratează subiecte precum operatorii multipli și importanța acestora cu exemple de cod.
De asemenea, am explorat detaliat instrucțiunile de control PL SQL. Instrucțiunile de control constau din structurile programului, cum ar fi iterația, starea și secvența.
În următorul tutorial, vom discuta despre procedurile PL SQL, funcțiile, cursorele și multe alte subiecte conexe.
Lectură recomandată
- Tutorial PL SQL pentru începători cu exemple | Ce este PL / SQL
- Operatori Python
- Enunțuri condiționate Unix: Dacă apoi altfel și Operatori relaționali
- Instrucțiuni de control Python (Python Continue, Break and Pass)
- Tutorial privind declarațiile condiționate C #
- Control sursă sau control versiune în DevOps (Tutorial video partea 2 - bloc 2)
- Bucle în C #: instrucțiuni de control și diverse bucle cu exemple
- Tutorial SVN Tortoise: Revizuiri în depozitul de coduri