Míg a hurok be Oracle PL/SQL példával
⚡ Okos összefoglaló
Oracle A PL/SQL WHILE ciklus megismétli a kódblokkot, amíg egy feltétel igaz marad. Ez egy belépési ellenőrző ciklus, amely minden iteráció előtt teszteli a kilépési feltételt, így a blokk akár nulla alkalommal is lefuthat, és nincs szükség explicit EXIT kulcsszóra.

Mi az a PL/SQL While ciklus?
Az Míg a hurok A PL/SQL-ben a ciklus utasítás hasonlóan működik, mint az alap ciklusutasítás, azzal a különbséggel, hogy a kilépési feltétel a ciklus elején található. Úgy működik, mint egy belépési ellenőrző ciklus, ahol a végrehajtási blokk csak akkor fut le, ha a feltétel teljesül, mivel a kilépési feltételt a végrehajtás előtt ellenőrzi a program.
Nem írja elő explicit módon az 'EXIT' kulcsszó használatát a ciklusból való kilépéshez, mivel minden alkalommal implicit módon érvényesíti a feltételt.
PL/SQL While Loop szintaxis
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- A 'WHILE' kulcsszó a ciklus kezdetét, az 'END LOOP' pedig a végét jelöli.
- A kilépési feltétel minden alkalommal kiértékelésre kerül, mielőtt a végrehajtási rész végrehajtása megkezdődne.
- A végrehajtási blokk tartalmazza az összes futtatandó kódot.
- A végrehajtási rész bármilyen végrehajtható utasítást tartalmazhat.
Például az Oracle PL/SQL While Loop
Ebben a példában 1-től 5-ig terjedő számokat nyomtatunk ki egy WHILE ciklusutasítással.

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Magyarázat:
- Code 2. sor: Az 'a' változó deklarálása 'NUMBER'-ként és inicializálása '1' értékkel.
- Code 4. sor: A „Program elindult” utasítás kinyomtatása.
- Code 5. sor: A 'WHILE' kulcsszó jelöli a ciklus kezdetét, és ellenőrzi, hogy az 'a' értéke kisebb vagy egyenlő-e 5-tel.
- Code 7. sor: Kiírja az „a” értékét.
- Code 8. sor: Az 'a' értékét 1-gyel növeli.
- Code 9. sor: Az „END LOOP” kulcsszó a végrehajtási blokk végét jelöli.
- A 7. és 8. sorok végrehajtása addig folytatódik, amíg az 'a' el nem éri a 6-os értéket, ekkor a feltétel HAMIS értéket ad vissza, és a vezérlés kilép a hurok.
- Code 10. sor: A „Program befejeződött” nyilatkozat nyomtatása.
WHILE ciklus vs. FOR ciklus vs. Basic ciklus
A PL/SQL három ciklustípust kínál, és a megfelelő kiválasztása átláthatóvá teszi a kódot. A WHILE ciklus feltételvezérelt ismétlésekhez illik, míg a másik kettő fix darabszámú ismétléshez vagy explicit módon vezérelt kilépéshez.
| Hurok | Kilépési feltételek | Legjobb akkor használni, amikor |
|---|---|---|
| WHILE ciklus | A felső feltétel hamissá válik | Az iterációk száma ismeretlen |
| FOR hurok | A számláló elérte a tartomány végét | Az iterációk száma ismert |
| Alap hurok | Explicit KIJÁRAT a blokkban | A kijáratot manuálisan vezérlik |
Mivel a WHILE ciklus a feltételét felül teszteli, a törzs akár nulla alkalommal is lefuthat, ha a feltétel eleve hamis. Ez a legfontosabb különbség egy alap ciklushoz képest, amelynek törzse mindig legalább egyszer lefut.
Végtelen While ciklus elkerülése
Egy WHILE ciklus teljes mértékben attól függ, hogy a vezérlőváltozó a kilépési feltétel felé halad-e. Ha ez soha nem történik meg, a ciklus örökké fut, és a munkamenet lefagy. Három szokás akadályozza meg ezt:
- Változtasd meg a számlálót minden iterációban. A példa az 'a' értékét növeli a cikluson belül; ennek a sornak az eltávolítása örökké tartó ciklust eredményezne.
- Teszteld a határt. Ellenőrizd, hogy a feltétel valóban hamissá válhat a kezdőértékre, nem csak ideális esetben.
- Adjon hozzá egy biztonsági KIJÁRATOT, MIKOR. Adatvezérelt ciklusok esetén az EXIT WHEN utasítás a maximális iterációs számon védelmet nyújt a váratlan értékek ellen.
Amikor az ismétlések száma valóban rögzített, egy FOR ciklus teljesen megszünteti a kockázatot, mivel a számlálóját automatikusan kezeli a rendszer.
