Oracle PL / SQL LOOP cu Exemplu

Cuprins:

Anonim

Ce sunt buclele?

Buclele permit ca o anumită parte a codului dintr-un program să fie executată pentru numărul dorit de ori.

În acest tutorial, vom vedea conceptul de buclă în PL / SQL și fluxul de control în bucle. O sa inveti-

  • Introducere în conceptul Loops
  • Declarații de control al buclei
  • Tipuri de bucle în PL / SQL
  • Declarație de buclă de bază
  • Etichetarea buclelor

Introducere în conceptul Loops

Conceptul de bucle oferă următorul avantaj în codificare.

  • Reutilizarea codului
  • Dimensiune redusă a codului
  • Flux ușor de control
  • Complexitate redusă

Diagrama de mai jos prezintă conceptul de buclă într-un mod pictural

În diagrama de mai sus, starea buclei va fi verificată și, atâta timp cât condiția buclei este îndeplinită, blocul de execuție va fi executat.

În fiecare iterație, variabila contorului de buclă care decide de fapt starea buclei ar trebui să se modifice pentru a face ieșirea controlului din buclă. În unele cazuri, această variabilă de contor de buclă este operator de creștere / descreștere pentru un număr predefinit și, în unele cazuri, este o condiție de căutare care continuă să execute blocul până când îl satisface.

Declarații de control al buclei

Înainte de a învăța conceptul de bucle, este obligatoriu să aflați instrucțiunile de control al buclei. Instrucțiunile de control buclă sunt cele care controlează de fapt fluxul de execuție în interiorul buclei. Mai jos este descrierea detaliată despre instrucțiunile de control al buclei.

CONTINUA

Acest cuvânt cheie trimite o instrucțiune către motorul PL / SQL că ori de câte ori motorul PL / SQL întâlnește acest cuvânt cheie în buclă, atunci va sări peste codul rămas în blocul de execuție al codului, iar următoarea iterație va începe imediat. Acest lucru va fi utilizat în principal dacă codul din buclă vrea să fie omis pentru anumite valori de iterație.

EXIT / EXIT WHEN

Acest cuvânt cheie trimite o instrucțiune către motorul PL / SQL care, ori de câte ori motorul PL / SQL întâlnește acest cuvânt cheie, va ieși imediat din bucla curentă. Dacă motorul PL / SQL întâlnește EXIT într-o buclă imbricată, atunci va ieși din bucla în care a fost definit, adică într-o buclă imbricată, oferind EXIT în bucla interioară va ieși din control doar din bucla interioară, dar nu din bucla exterioară. „EXIT WHEN” este urmat de o expresie care dă un rezultat boolean. Dacă rezultatul este ADEVĂRAT, atunci controlul va IEȘI.

MERGI LA

Această instrucțiune va transfera controlul către instrucțiunea etichetată („GOTO

  • Transferul controlului se poate face numai în cadrul subprogramelor.
  • Transferul controlului nu poate fi efectuat de la partea de manipulare a excepțiilor la partea de execuție

Utilizarea acestei afirmații nu este recomandată decât dacă nu există alte alternative, deoarece trasabilitatea codului de control va fi foarte dificilă în program datorită transferului controlului dintr-o parte în alta.

Tipuri de bucle în PL / SQL

PL / SQL oferă următoarele trei tipuri de bucle

  • Declarație de bază a buclei
  • Pentru instrucțiunea buclă
  • În timp ce declarația buclă

Declarație de buclă de bază

Această instrucțiune de buclă este cea mai simplă structură de buclă din PL / SQL. Blocul de execuție începe cu cuvântul cheie „LOOP” și se termină cu cuvântul cheie „END LOOP”.

Condiția de ieșire ar trebui să fie dată în interiorul acestui bloc de execuție, astfel încât controlul să iasă din buclă.

Este necesar ca cuvântul cheie EXIT să fie dat în mod explicit în partea de execuție pentru a ieși din buclă.

LOOPEND LOOP;
Sintaxă Explicație:
  • În sintaxa de mai sus, cuvântul cheie „LOOP” marchează începutul buclei și „END LOOP” marchează sfârșitul buclei.
  • Blocul de execuție conține tot codul care trebuie executat, inclusiv condiția EXIT.
  • Partea de execuție poate conține orice instrucțiune de execuție.

Notă: Instrucțiunea de buclă de bază fără cuvânt cheie EXIT va fi un INFINITE-LOOP care nu se va opri niciodată.

Exemplul 1 : În acest exemplu, vom imprima numărul de la 1 la 5 folosind instrucțiunea de buclă de bază. Pentru aceasta, vom executa următorul cod.

DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/

Explicatie cod:

  • Linia de cod 2 : Declararea variabilei „a” ca tip de date „NUMĂR” și inițializarea acesteia cu valoarea „1”.
  • Linia de cod 4 : Tipărirea declarației „Programul a început”.
  • Linia de cod 5: Cuvântul cheie „LOOP” marchează începutul buclei.
  • Linia de cod 6: Tipărește valoarea „a”.
  • Linia de cod 7: mărește valoarea „a” cu +1.
  • Linia de cod 8: Verifică dacă valoarea „a” este mai mare de 5.
  • Linia de cod 9: Cuvântul cheie „END LOOP” marchează sfârșitul blocului de execuție.
  • Codul de la linia 6 la linia 8 va continua să se execute până când „a” atinge valoarea 6, deoarece condiția va reveni la TRUE, iar controlul va IEȘI din buclă.
  • Linia de cod 10: Tipărirea declarației „Program finalizat”

Etichetarea buclelor

În PL / SQL, buclele pot fi etichetate. Eticheta trebuie să fie inclusă între „<<” și „>>”. Etichetarea buclelor în special în codurile de buclă imbricate va da mai multă lizibilitate. Eticheta poate fi dată în comanda EXIT pentru a ieși din bucla respectivă. Folosind etichetă, controlul poate fi făcut pentru a ieși direct din bucla exterioară a buclelor imbricate din orice loc din interiorul buclelor, dând comanda de ieșire urmată de eticheta buclei exterioare.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Sintaxă Explicație:
  • În sintaxa de mai sus, bucla out are încă o buclă înăuntrul ei.
  • Etichetele acestor bucle sunt „<>” și ​​„<>”.

Exemplul 1 : În acest exemplu, vom imprima numărul începând de la 1 folosind instrucțiunea de buclă de bază. Fiecare număr va fi tipărit de câte ori valoarea acestuia. Limita superioară a seriei este fixată la partea de declarație a programului. Să învățăm cum putem folosi conceptul de etichetă pentru a realiza acest lucru. Pentru aceasta, vom executa următorul cod

DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop»‭ ‬LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT outer_loop WHEN a > upper_limit;dbms_output.put_line(a);b:=b+l;EXIT inner_loop WHEN b>a;END LOOP;END LOOP;dbms_output.put_line('Program completed.');END;/

Explicatie cod:

  • Linia de cod 2-3 : declararea variabilelor „a” și „b” ca tip de date „NUMĂR”.
  • Linia de cod 4 : Declararea variabilei „upper_limit” ca tip de date „NUMBER” cu valoarea „4”
  • Linia de cod 6 : Tipărirea declarației „Programul a început”.
  • Linia de cod 7: Bucla exterioară a fost etichetată ca „bucla_ exterioară”
  • Linia de cod 9: valoarea „a” este mărită cu 1.
  • Linia de cod 11: Bucla interioară a fost etichetată ca "bucla_internă".
  • Linia de cod 13: condiție EXIT care verifică dacă valoarea „a” este mai mare decât valoarea „upper_limit”. Dacă nu, atunci va merge mai departe, altfel iese direct din bucla exterioară.
  • Linia de cod 14: Tipărirea valorii „b”.
  • Linia de cod 15: Crește valoarea „b” cu +1.
  • Linia de cod 16: Condiție EXIT care verifică dacă valoarea „b” este mai mare decât „a”. Dacă da, atunci va ieși din control din bucla interioară.
  • Linia de cod 14: Tipărirea declarației „Program finalizat”

rezumat

Buclă Buclă de bază
Criterii de IEȘIRE Ieșiți atunci când întâlnește cuvântul cheie „EXIT” în partea de execuție
Utilizare Bine de utilizat când ieșirea nu se bazează pe nicio condiție anume.