Oracle PL/SQL FOR LOOP példával
Mi az a For Loop?
A „FOR LOOP” utasítás akkor a legalkalmasabb, ha egy kódot ismert számú alkalommal szeretne végrehajtani, nem pedig más feltételek alapján.
Ebben a ciklusban az alsó és a felső határ kerül meghatározásra, és amíg a ciklusváltozó e tartomány között van, a ciklus végrehajtódik.
A ciklusváltozó önnövekményes, ezért ebben a ciklusban nincs szükség kifejezett növekményes műveletre. A ciklusváltozót nem kell deklarálni, mivel implicit módon deklarálják.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Szintaxis magyarázata:
- A fenti szintaxisban a „FOR” kulcsszó a ciklus kezdetét, az „END LOOP” pedig a ciklus végét jelöli.
- A ciklusváltozó minden alkalommal kiértékelésre kerül a végrehajtási rész végrehajtása előtt.
- A végrehajtási blokk tartalmazza az összes végrehajtandó kódot. A végrehajtási rész bármilyen végrehajtási utasítást tartalmazhat.
- A loop_variable implicit módon deklarálva van a teljes ciklus végrehajtása során, és ennek a loop_variable hatóköre csak ezen a cikluson belül lesz.
- Ha a ciklusváltozó kikerült a tartományból, akkor a vezérlés kilép a ciklusból.
- A ciklus fordított sorrendben működhet, ha hozzáadja a 'REVERSE' kulcsszót az alsó_korlát elé.
Példa 1: Ebben a példában 1-től 5-ig számot fogunk nyomtatni a FOR ciklus utasítással. Ehhez a következő kódot fogjuk végrehajtani.
BEGIN
dbms Qutput.put linef.Prp.gram started.' );
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP:
dbms_output.put_iine('Program completed.');
END;
/
Kód magyarázata:
- 2. kódsor: A „Program indulva” utasítás kinyomtatása.
- 3. kódsor: A "FOR" kulcsszó a ciklus kezdetét jelöli, és az "a" ciklus_változó deklarálva van. Ennek értéke most 1 és 5 között lesz
- 5. kódsor: Kiírja az „a” értékét.
- 6. kódsor: Az 'END LOOP' kulcsszó a végrehajtási blokk végét jelöli.
- Az 5. sor kódja addig fut, amíg az 'a' el nem éri a 6-os értéket, mivel a feltétel sikertelen lesz, és a vezérlő KILÉPIK a ciklusból.
- 7. kódsor: „A program befejeződött” nyilatkozat kinyomtatása
Beágyazott hurkok
A ciklusutasítások egymásba ágyazhatók is. A külső és a belső hurok különböző típusú lehet. A beágyazott ciklusban a külső ciklus minden egyes iterációs értékénél a belső ciklus teljes mértékben végrehajtásra kerül.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Szintaxis magyarázata:
- A fenti szintaxisban a külső ciklusban van még egy ciklus.
- A hurkok bármilyen típusúak lehetnek, és a végrehajtási funkcionalitás része ugyanaz.
Példa 1: Ebben a példában 1-től 3-ig számot fogunk nyomtatni a FOR ciklus utasítással. Minden szám annyiszor kerül kinyomtatásra, ahányszor az értéke. Ehhez a következő kódot fogjuk végrehajtani.
DECLARE
b NUMBER;
BEGIN
dbms output put line(‘Program started' );
FOR a IN 1..3
LOOP
b:=1;
WHILE (a>=b)
LOOP
dbms output put line(a);
b:=b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed' );
END;
/
Kód magyarázata:
- 2. kódsor: A 'b' változó deklarálása 'NUMBER' adattípusként.
- 4. kódsor: A „Program indulva” utasítás kinyomtatása.
- 5. kódsor: A "FOR" kulcsszó a ciklus kezdetét jelöli, és az "a" ciklus_változó deklarálva van. Ennek értéke most 1 és 3 között lesz
- 7. kódsor: A „b” értékének minden alkalommal visszaállítása „1”-re.
- 8. kódsor: Belső míg hurok ellenőrzi az a>=b feltételt.
- 10. kódsor: Kiírja az „a” értékét, amíg a fenti feltétel teljesül.
- 14. kódsor: „A program befejeződött” nyilatkozat kinyomtatása
Összegzésként
| Hurok | FOR Loop |
|---|---|
| KILÉPÉSI kritériumok | Lépjen ki, amikor a számláló eléri a határértéket |
| Használat | Jól használható, ha ismert a végrehajtandó hurkok száma. |




