Oracle PL/SQL tsükkel koos näitega

Mis on silmused?

Loops võimaldab teatud osa programmis olevast koodist soovitud arv kordi käivitada.

Selles õpetuses vaatleme PL/SQL-i silmuse kontseptsiooni ja tsüklite juhtimise voogu.

Sissejuhatus loopsi kontseptsiooni

Silmuste kontseptsioon annab kodeerimisel järgmise eelise.

  • Koodi korduvkasutatavus
  • Vähendatud koodi suurus
  • Lihtne juhtimisvoog
  • Vähendatud keerukus

Allolev diagramm näitab silmuse kontseptsiooni pildilisel viisil

Oracle PL/SQL tsükkel

Ülaltoodud diagrammil kontrollitakse tsükli tingimust ja seni, kuni tsükli tingimus on täidetud, täidetakse täitmisplokk.

Igas iteratsioonis peaks silmusloenduri muutuja, mis tegelikult otsustab tsükli tingimuse, muutuma, et juhtimine tsüklist väljuks. Mõnel juhul on see silmusloenduri muutuja etteantud loenduse suurendamise/vähendamise operaator ja mõnel juhul on see otsingutingimus, mis jätkab ploki täitmist, kuni see seda rahuldab.

Silmusjuhtimise avaldused

Enne silmuse kontseptsiooni õppimist on kohustuslik tutvuda tsükli juhtimislausetega. Silmuse juhtlaused on need, mis tegelikult juhivad tsükli sees käitamise voogu. Allpool on üksikasjalik kirjeldus tsükli juhtlausete kohta.

EDASI

See märksõna saadab PL/SQL-mootorile juhise, et kui PL/SQL-mootor seda märksõna tsükli sees kohtab, jätab see koodi täitmisplokis ülejäänud koodi vahele ja järgmine iteratsioon algab kohe. Seda kasutatakse peamiselt siis, kui tsükli sees olev kood soovib teatud iteratsiooniväärtuste puhul vahele jätta.

VÄLJU / VÄLJU MILLAL

See märksõna saadab PL/SQL-mootorile juhise, et kui PL/SQL-mootor selle märksõnaga kokku puutub, väljub see kohe praegusest tsüklist. Kui PL/SQL-mootor kohtab pesastatud tsüklis EXIT-i, siis väljub see tsüklist, milles see on määratletud, st pesastatud tsüklis, sisemises tsüklis EXIT-i andmine väljub ainult sisemisest tsüklist, kuid mitte välisest ahelast. 'EXIT WHEN' järgneb avaldis, mis annab Boole'i ​​tulemuse. Kui tulemus on TRUE, siis juhtelement VÄLJUB.

GOTO

See avaldus kannab juhtimise üle märgistatud avaldusele ("GOTO ;)"). Sellel on järgmised piirangud

  • Juhtimise üleandmist saab teha ainult alamprogrammide sees.
  • Juhtimist ei saa erandi käsitlemise osalt täitmisosale üle kanda

Selle avalduse kasutamine ei ole soovitatav, välja arvatud juhul, kui pole muid alternatiive, kuna koodijuhtimise jälgitavus on programmis väga raske, kuna juhtimine läheb ühelt osalt teisele.

Silmuse tüübid PL/SQL-is

PL / SQL pakub järgmist kolme tüüpi silmuseid

Silmuse põhilause

See silmuslause on PL/SQL-i lihtsaim tsüklistruktuur. Täiteplokk algab märksõnaga 'LOOP' ja lõpeb märksõnaga 'END LOOP'.

Väljumistingimus tuleks anda selles täitmisplokis, nii et see kontrolliks tsüklist väljumist.

Tingist väljumiseks peab täitmisosas olema selgesõnaliselt antud märksõna EXIT.

Silmuse põhilause

 LOOP
<execution block starts>
<EXIT condition based on developer criteria> 
<execution_block_ends>
END LOOP;

Süntaksi selgitus:

  • Ülaltoodud süntaksis tähistab märksõna "LOOP" tsükli algust ja "END LOOP" tsükli lõppu.
  • Täitmisplokk sisaldab kogu koodi, mis tuleb käivitada, sealhulgas tingimust EXIT.
  • Täiteosa võib sisaldada mis tahes täitmislauset.

Märge: Põhiline silmuslause ilma EXIT-i märksõnata on LÕPMATUSLIK, mis ei peatu kunagi.

Näiteks 1: Selles näites prindime arvu vahemikus 1 kuni 5, kasutades põhilist tsüklilauset. Selleks käivitame järgmise koodi.

Silmuse põhilause

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

Koodi selgitus:

  • Koodirida 2: muutuja 'a' deklareerimine andmetüübiks 'NUMBER' ja selle lähtestamine väärtusega '1'.
  • Koodirida 4: Avalduse “Programm käivitatud” trükkimine.
  • Koodirida 5: Märksõna 'LOOP' tähistab tsükli algust.
  • Koodirida 6: Prindib 'a' väärtuse.
  • Koodirida 7: Suurendab 'a' väärtust +1 võrra.
  • Koodirida 8: Kontrollib, kas 'a' väärtus on suurem kui 5.
  • Koodirida 9: Märksõna 'END LOOP' tähistab täitmisploki lõppu.
  • Koodi ridadest 6 kuni 8. reale täitmist jätkatakse, kuni 'a' jõuab väärtuseni 6, kuna tingimus tagastab väärtuse TRUE ja juhtelement VÄLJUB tsüklist.
  • Koodirida 10: Teate "Programm lõpetatud" trükkimine

Silmuste märgistamine

PL/SQL-is saab silmuseid märgistada. Silt peaks olema "<<" ja ">>" vahel. Silmuste märgistamine, eriti pesastatud tsüklikoodides, annab parema loetavuse. Sildi saab anda käsus EXIT, et sellest konkreetsest tsüklist väljuda. Sildi abil saab juhtelemendi panna pesastatud silmuste välisest ahelast otse väljuma mis tahes kohast silmuse sees, andes väljumiskäsu, millele järgneb välimise silmuse silt.

Silmuste märgistamine

<<OUTER_LOOP>>
LOOP 
	<execution_block_starts>
	.
	<<INNER_LOOP>>
	LOOP --inner
		<execution_part>
	END LOOP;
	.
	<executi_block_ends>
END LOOP;

Süntaksi selgitus:

  • Ülaltoodud süntaksis on väljundsilmus sees veel üks silmus.
  • '< >' ja '< >' on nende silmuste sildid.

Näiteks 1: Selles näites prindime arvu alates 1, kasutades Basic loop lauset. Iga number trükitakse nii mitu korda kui selle väärtus. Seeria ülempiir on fikseeritud programmi deklaratsiooni osa juures. Õppime, kuidas saame selle saavutamiseks kasutada sildi kontseptsiooni. Selleks käivitame järgmise koodi

Silmuste märgistamineSilmuste märgistamine

DECLARE
a NUMBER:=0;
b NUMBER;
upper-limit NUMBER :=4;
BEGIN
dbms_output.put_line(‘Program started.' ); 
«outerloop»‭	‬
LOOP 
a:=a+1;
b:=l;
«inner loop»
LOOP
EXIT 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;
/

Koodi selgitus:

  • Koodirida 2-3: muutuja 'a' ja 'b' deklareerimine andmetüübiks 'NUMBER'.
  • Koodirida 4: muutuja 'upper_limit' deklareerimine andmetüübiks 'NUMBER' väärtusega '4'
  • Koodirida 6: Avalduse “Programm käivitatud” trükkimine.
  • Koodirida 7: Välissilmus on märgistatud kui "outer_loop"
  • Koodirida 9: 'a' väärtust suurendatakse 1 võrra.
  • Koodirida 11: Sisemine silmus on märgistatud kui "inner_loop".
  • Koodirida 13: EXIT-tingimus, mis kontrollib, kas väärtus 'a' on suurem kui 'upper_limit' väärtus. Kui ei, siis läheb see kaugemale, vastasel juhul väljub see otse välisest ahelast.
  • Koodirida 14: 'b' väärtuse trükkimine.
  • Koodirida 15: Suurendab 'b' väärtust +1 võrra.
  • Koodirida 16: Tingimus EXIT, mis kontrollib, kas b väärtus on suurem kui a. Kui jah, siis väljub see sisemisest ahelast juhtimisest.
  • Koodirida 14: Teate "Programm lõpetatud" trükkimine

kokkuvõte

Silmus Põhiline silmus
VÄLJUMISkriteeriumid Väljuge, kui kohtab täitmisosas märksõna 'EXIT'
Kasutus Hea kasutada, kui väljumine ei põhine ühelgi konkreetsel tingimusel.