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.

  • 🔁 Cél: Egy WHILE ciklus addig fut, amíg egy feltétel igaz, és leáll, amint hamis lesz.
  • 🚦 Belépési ellenőrzés: A feltételt a blokk előtt teszteljük, így a ciklus nulla alkalommal futhat le.
  • 🧮 Nincs szükség KIJÁRATRA: A feltétel implicit módon érvényesül minden iterációban, így nincs szükség explicit EXIT-re.
  • 🔢 számláló: A blokkon belüli egy változónak meg kell változnia, hogy a feltétel végül hamis legyen.
  • ♾️ Végtelen kockázat: Ha a számláló soha nem hibázik a feltétel teljesítésében, a ciklus örökké fut.
  • 🇧🇷 vs. FOR: Használj WHILE-t, ha az iterációk száma ismeretlen, és FOR-t, ha fix.
  • 🚪 Korai kilépés: Az EXIT WHEN függvény továbbra is ki tud hagyni egy WHILE ciklust, mielőtt a feltétel hamisra váltana.

Oracle PL/SQL While Loop

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.

PL/SQL While Loop példa
PL/SQL While Loop példa
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.

GYIK

Igen. Mivel a feltétel a blokk előtt ellenőrzésre kerül, ha az elején hamis, a törzs soha nem fut le. Ez a belépési ellenőrzés a fő különbség egy alap ciklushoz képest, amely mindig egyszer fut le.

Győződjön meg róla, hogy a cikluson belüli változó minden iterációban a kilépési feltétel felé változik. Az EXIT WHEN hozzáadása a maximális darabszámnál hasznos biztonsági háló az adatvezérelt ciklusok esetében.

Használd a WHILE függvényt, ha az iterációk száma nem ismert, és egy feltételtől függ. Használd a FOR függvényt, ha egy fix tartományon belül ciklust futtatsz, mivel a számlálóját a rendszer automatikusan kezeli.

Gyakran. A mesterséges intelligencia ellenőrizni tudja, hogy a vezérlőváltozó a kilépési feltétel felé halad-e, és figyelmeztetni tudja, ha nem. Egy olyan ciklus, amelynek kilépése élő adatoktól függ, továbbra is tesztet igényel a biztos működéshez.

Igen. Bár egy WHILE ciklus kilép, amikor a legfelső feltétele hamisra változik, egy EXIT vagy EXIT WHEN a ciklus törzsében korábban is elhagyhatja, ami hasznos egy speciális esetben történő kitöréshez.

Foglald össze ezt a bejegyzést a következőképpen: