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. |