Mis on aasad?
Loops võimaldab programmi teatud osa koodist käivitada soovitud arv kordi.
Selles õpetuses näeme PL / SQL-i silmusekontseptsiooni ja tsüklites juhtimise voogu. Sa õpid-
- Sissejuhatus aasade kontseptsiooni
- Silmusjuhtimise avaldused
- Silmusetüübid PL / SQL-is
- Põhiline silmuse avaldus
- Silmuste sildistamine
Sissejuhatus aasade kontseptsiooni
Loopsi kontseptsioon pakub kodeerimisel järgmist eelist.
- Koodi korduvkasutus
- Vähendatud koodi suurus
- Lihtne juhtimisvoog
- Vähendatud keerukus
Alloleval skeemil on silmusmõiste kujutatud
Ülaltoodud diagrammil kontrollitakse tsükli tingimust ja seni, kuni tsükli tingimus on täidetud, käivitatakse täitmisplokk.
Igas iteratsioonis peaks muutuma silmuse loenduri muutuja, mis tegelikult otsustab silmuse tingimuse, et juhtimine väljuks silmusest. Mõnel juhul on see silmusloenduri muutuja juurdekasvu / vähendamise operaator ettemääratud loenduse jaoks ja mõnel juhul on see otsingutingimus, mis jätkab ploki käivitamist seni, kuni see selle rahuldab.
Silmusjuhtimise avaldused
Enne silmuste kontseptsiooni õppimist on kohustuslik õppida silmuse juhtlauseid. Loop-juhtlaused on need, mis tegelikult kontrollivad tsükli siseselt täitmise voogu. Allpool on üksikasjalik kirjeldus silmusjuhtimise avalduste kohta.
JÄTKAKE
See märksõna saadab PL / SQL-i mootorile käsu, et alati, kui PL / SQL-i mootor kohtab seda märksõna tsükli sees, jätab ta koodi ülejäänud täitmisblokis vahele ja järgmine iteratsioon algab kohe. Seda kasutatakse peamiselt juhul, kui silmus olev kood soovib teatud iteratsiooniväärtuste jaoks vahele jätta.
EXIT / EXIT WHEN
See märksõna saadab PL / SQL-i mootorile käsu, et alati, kui PL / SQL-i mootor selle märksõnaga kohtab, väljub see kohe praegusest silmusest. Kui PL / SQL-i mootor kohtub EXIT-iga sisestatud tsüklis, siis tuleb see välja silmusest, milles see on määratletud, st pesastatud silmustes, kui väljundi EXIT sisemine silmus väljub juhtimisest ainult sisemisest silmusest, kuid mitte välisest silmusest. 'EXIT WHEN' järel järgneb avaldis, mis annab Boole'i tulemuse. Kui tulemus on TÕENE, siis juhtimine väljub.
MINEMA
See lause kannab juhtnupu sildistatud avaldusele ("GOTO
- Juhtimist saab üle anda ainult alamprogrammides.
- Juhtelementi ei saa teha erandite töötlemise osast täitmisosani
Selle lause kasutamine pole soovitatav, välja arvatud juhul, kui pole muid alternatiive, kuna koodijuhtimise jälgitavus on programmis juhtimise ühest osast teise ülekandmise tõttu väga keeruline.
Silmusetüübid PL / SQL-is
PL / SQL pakub kolme tüüpi silmusid
- Põhiline silmuse avaldus
- Lingi avalduse jaoks
- Kuigi loop lause
Põhiline silmuse avaldus
See silmuse lause on PL / SQL-i kõige lihtsam silmusstruktuur. Täitmisblokk algab märksõnaga 'LOOP' ja lõpeb märksõnaga 'END LOOP'.
Väljumistingimus tuleks anda selle käivitamisploki sees, nii et kontroll väljuks silmusest.
Silmusest väljumiseks vajab see märksõna EXIT sõnaselgelt täitmisosas.
LOOPSüntaksi selgitus:END LOOP;
- Ülaltoodud süntaksis tähistab võtmesõna 'LOOP' tsükli algust ja 'END LOOP' tsükli lõppu.
- Täitmisplokk sisaldab kogu koodi, mis tuleb täita, sealhulgas tingimus EXIT.
- Täitmisosa võib sisaldada mis tahes täitmislauset.
Märkus. Põhiline silmuse lause, millel pole märksõna EXIT, on lõpmatu silmus, mis ei peatu kunagi.
Näide 1 : Selles näites printime numbri vahemikus 1 kuni 5, kasutades põhilingi lauset. Selleks täidame järgmise koodi.
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:/
Koodi selgitus:
- Koodirida 2 : Muutuja a kuulutamine andmetüübiks „NUMBER“ ja initsialiseerimine väärtusega „1“.
- Koodirida 4 : Väljavõtte "Programmi käivitamine" printimine.
- Koodirida 5: Märksõna 'LOOP' tähistab tsükli algust.
- Koodirida 6: prindib väärtuse a.
- 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äitmisbloki lõppu.
- Koodi real 6 kuni real 8 jätkatakse, kuni 'a' jõuab väärtuseni 6, kuna tingimus tagastab TÕENE ja juhtimine väljub silmusest.
- Koodirida 10: Väljavõtte "Programm lõpetatud" printimine
Silmuste sildistamine
PL / SQL-is saab tsükleid sildistada. Silt peaks olema suletud "<<" ja ">>" vahele. Silmuste sildistamine, eriti pesastatud silmuste koodides, annab suurema loetavuse. Sildi saab anda käsust EXIT, et väljuda just sellest silmusest. Sildi abil saab juhtnupu sisestatud silmuste välisest silmusest väljuda otse silmuste mis tahes kohast, andes käsu exit, millele järgneb välise silmuse silt.
<Süntaksi selgitus:>LOOP . < > LOOP --inner END LOOP; . END LOOP;
- Ülaltoodud süntaksis on väljundsilmus veel üks silmus.
- Nende silmuste sildid on '<
>' ja '< >.
Näide 1 : Selles näites printime numbri alates 1, kasutades Basic loop lauset. Iga numbrit trükitakse mitu korda selle väärtusest. Seeria ülemine piir on fikseeritud programmi deklaratsiooni osas. Õppigem, kuidas saame selle saavutamiseks kasutada märgistuse kontseptsiooni. Selleks täidame järgmise koodi
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;/
Koodi selgitus:
- Koodirida 2–3 : muutujate „a” ja „b” deklareerimine andmetüübiks „NUMBER”.
- Koodirida 4 : muutuja „upper_limit” deklareerimine andmetüübiks „NUMBER” väärtusega „4”
- Koodirida 6 : Väljavõtte "Programmi käivitamine" printimine.
- Koodirida 7: välimine silmus on märgistatud kui „external_loop”
- Koodirida 9: a väärtust suurendatakse 1-ga.
- Koodirida 11: sisemine silmus on märgistatud kui "inner_loop".
- Koodirida 13: tingimus EXIT, mis kontrollib, kas väärtus „a” on suurem kui väärtus „upper_limit”. Kui ei, siis läheb see kaugemale, muidu väljub see välisest silmusest otse.
- Koodirida 14: „b” väärtuse printimine.
- Koodirida 15: suurendab b väärtust +1 võrra.
- Koodirida 16: EXIT tingimus, mis kontrollib, kas b väärtus on suurem kui a. Kui jah, siis väljub see juhtimisest sisemisest silmusest.
- Koodirida 14: Väljavõtte "Programm lõpetatud" printimine
Kokkuvõte
Loop | Põhisilmus |
EXIT-kriteeriumid | Väljuge, kui kohtate täitmisosas märksõna „EXIT” |
Kasutamine | Hea kasutada, kui väljumine ei põhine ühelgi konkreetsel tingimusel. |