Oracle PL/SQL LOOP példával
Mik azok a hurkok?
A ciklusok lehetővé teszik, hogy a programban a kód egy bizonyos része a kívánt számú alkalommal lefusson.
Ebben az oktatóanyagban látni fogjuk a PL/SQL cikluskoncepcióját és a vezérlés folyamatát a ciklusokban.
Bevezetés a hurkok koncepciójába
A hurkok koncepciója a következő előnyöket nyújtja a kódolásban.
- A kód újrafelhasználhatósága
- Csökkentett kódméret
- Könnyű vezérlés
- Csökkentett komplexitás
Az alábbi ábra a WC-t mutatjaping koncepció képi módon
A fenti ábrán a ciklusfeltételt ellenőrizzük, és amíg a ciklusfeltétel teljesül, a végrehajtási blokk végrehajtásra kerül.
Minden iterációban a hurok feltételét ténylegesen meghatározó hurokszámláló változónak módosulnia kell, hogy a vezérlő kilépjen a hurokból. Egyes esetekben ez a hurokszámláló változó egy előre definiált számláló növekmény/csökkentő operátora, és bizonyos esetekben ez egy keresési feltétel, amely addig folytatja a blokk végrehajtását, amíg az eleget nem tesz.
Hurokvezérlő nyilatkozatok
A hurkok fogalmának megismerése előtt kötelező megtanulni a ciklusvezérlő utasításokat. A ciklusvezérlő utasítások azok, amelyek ténylegesen szabályozzák a cikluson belüli végrehajtás folyamatát. Az alábbiakban a ciklusvezérlő utasítások részletes leírása található.
TOVÁBB
Ez a kulcsszó azt az utasítást küldi a PL/SQL motornak, hogy amikor a PL/SQL motor találkozik ezzel a kulcsszóval a cikluson belül, akkor kihagyja a kód végrehajtási blokkjában lévő maradék kódot, és azonnal elindul a következő iteráció. Ez főleg akkor lesz használatos, ha a cikluson belüli kódot bizonyos iterációs értékeknél ki akarja hagyni.
EXIT / EXIT WHEN
Ez a kulcsszó azt az utasítást küldi a PL/SQL motornak, hogy amikor a PL/SQL motor találkozik ezzel a kulcsszóval, azonnal kilép az aktuális ciklusból. Ha a PL/SQL motor egy beágyazott ciklusban találkozik az EXIT-tel, akkor abból a ciklusból fog kilépni, amelyben definiálták, azaz beágyazott ciklusban, ha a belső ciklusban az EXIT parancsot adjuk, az csak a belső ciklusból lép ki a vezérlésből, de nem a külső hurokból. Az „EXIT WHEN” kifejezést egy logikai eredményt adó kifejezés követi. Ha az eredmény IGAZ, akkor a vezérlő EXIT.
GOTO
Ez az utasítás átviszi a vezérlőt a címkézett utasításra ("GOTO ;)"). Ez a következő korlátozásokkal rendelkezik
- A vezérlés átadása csak az alprogramokon belül történhet.
- Az irányítást nem lehet a kivételkezelő részről a végrehajtási részre átvinni
Ennek az utasításnak a használata nem ajánlott, kivéve, ha nincs más alternatíva, mivel a kódvezérlő tracA kezelhetőség nagyon nehéz lesz a programban a vezérlés egyik részről a másikra történő átruházása miatt.
A hurok típusai PL/SQL-ben
PL / SQL a következő három típusú hurkot biztosít
- Alapvető hurokutasítás
- A hurokutasításhoz
- While loop utasítás
Alap hurok utasítás
Ez a ciklusutasítás a PL/SQL legegyszerűbb ciklusszerkezete. A végrehajtási blokk a 'LOOP' kulcsszóval kezdődik, és az 'END LOOP' kulcsszóval végződik.
A kilépési feltételt ebben a végrehajtási blokkban kell megadni, hogy a vezérlés kilépjen a hurokból.
A ciklusból való kilépéshez az EXIT kulcsszót kifejezetten meg kell adni a végrehajtási részben.
LOOP <execution block starts> <EXIT condition based on developer criteria> <execution_block_ends> END LOOP;
Szintaxis magyarázata:
- A fenti szintaxisban a „LOOP” kulcsszó a ciklus kezdetét, az „END LOOP” pedig a ciklus végét jelöli.
- A végrehajtási blokk tartalmazza az összes végrehajtandó kódot, beleértve az EXIT feltételt is.
- A végrehajtási rész bármilyen végrehajtási utasítást tartalmazhat.
Jegyzet: Az EXIT kulcsszó nélküli alapvető hurokutasítás egy INFINITE-LOOP lesz, amely soha nem fog leállni.
Példa 1: Ebben a példában az 1-től 5-ig terjedő számot fogjuk kiírni az alapvető ciklus utasítással. Ehhez a következő kódot hajtjuk végre.
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:
/
Code Magyarázat:
- Code 2 sor: Az 'a' változó 'NUMBER' adattípusként való deklarálása és inicializálása '1' értékkel.
- Code 4 sor: A „Program indulva” utasítás kinyomtatása.
- Code 5. sor: A „LOOP” kulcsszó a ciklus kezdetét jelöli.
- Code 6. sor: Kiírja az „a” értékét.
- Code 7. sor: +1-gyel növeli az „a” értékét.
- Code 8. sor: Ellenőrzi, hogy az „a” értéke nagyobb-e 5-nél.
- Code 9. sor: Az 'END LOOP' kulcsszó a végrehajtási blokk végét jelöli.
- A 6. sortól a 8. sorig terjedő kód addig fut, amíg az 'a' el nem éri a 6 értéket, mivel a feltétel IGAZ értéket ad vissza, és a vezérlő KILÉPIK a ciklusból.
- Code 10. sor: „A program befejeződött” nyilatkozat kinyomtatása
A hurkok címkézése
PL/SQL-ben a ciklusok címkézhetők. A címkét a „<<” és „>>” közé kell tenni. A hurkok címkézése, különösen a beágyazott hurokkódokban, jobb olvashatóságot biztosít. A címkét az EXIT paranccsal lehet megadni az adott ciklusból való kilépéshez. A címke használatával a vezérlő közvetlenül kiléphet a beágyazott hurkok külső hurkából a hurkon belüli bárhonnan, az exit parancs, majd a külső hurokcímke megadásával.
<<OUTER_LOOP>> LOOP <execution_block_starts> . <<INNER_LOOP>> LOOP --inner <execution_part> END LOOP; . <executi_block_ends> END LOOP;
Szintaxis magyarázata:
- A fenti szintaxisban az out ciklusban van még egy ciklus.
- A '< >' és '< >' ezek a hurkok címkéi.
Példa 1: Ebben a példában az 1-től kezdődő számot fogjuk kiírni Basic ciklus utasítással. Minden szám annyiszor kerül kinyomtatásra, ahányszor az értéke. A sorozat felső határa a program deklarációs résznél van rögzítve. Tanuljuk meg, hogyan használhatjuk a címke koncepcióját ennek eléréséhez. Ehhez a következő kódot hajtjuk végre
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;
/
Code Magyarázat:
- Code 2-3. sor: Az 'a' és 'b' változó 'NUMBER' adattípusként való deklarálása.
- Code 4 sor: Az 'upper_limit' változó deklarálása 'NUMBER' adattípusként '4' értékkel
- Code 6 sor: A „Program indulva” utasítás kinyomtatása.
- Code 7. sor: A külső hurok „outer_loop” címkével lett ellátva
- Code 9. sor: Az „a” értéke 1-gyel nő.
- Code 11. sor: A belső hurok „inner_loop” címkével lett ellátva.
- Code 13. sor: EXIT feltétel, amely ellenőrzi, hogy az 'a' érték magasabb-e, mint az 'upper_limit' érték. Ha nem, akkor tovább megy, különben közvetlenül kilép a külső hurokból.
- Code 14. sor: 'b' értékének kinyomtatása.
- Code 15. sor: +1-gyel növeli a „b” értékét.
- Code 16. sor: EXIT feltétel, amely ellenőrzi, hogy a 'b' értéke nagyobb-e, mint az 'a'. Ha igen, akkor kilép a vezérlésből a belső hurokból.
- Code 14. sor: „A program befejeződött” nyilatkozat kinyomtatása
Összegzésként
| Hurok | Alaphurok |
| KILÉPÉSI kritériumok | Lépjen ki, ha az 'EXIT' kulcsszóval találkozik a végrehajtási részben |
| Használat | Jól használható, ha a kilépés nem egy adott körülményen alapul. |






