Kuigi Loop sisse Oracle PL/SQL koos näitega
⚡ Nutikas kokkuvõte
Oracle PL/SQL WHILE tsükkel kordab koodiplokki seni, kuni tingimus jääb tõeseks. See on sisenemist kontrolliv tsükkel, mis testib väljumistingimust enne iga iteratsiooni, seega võib plokk käivituda null korda ja see ei vaja selget EXIT-võtmesõna.

Mis on PL/SQL While tsükkel?
. Kuigi Loop PL/SQL-is toimib see sarnaselt tavalise tsükli lausega, välja arvatud see, et väljumistingimus on tsükli alguses. See toimib nagu sisenemist kontrolliv tsükkel, kus täitmisplokk käivitub ainult siis, kui tingimus on täidetud, kuna väljumistingimust kontrollitakse enne täitmist.
See ei nõua tsüklist väljumiseks otseselt märksõna 'EXIT', kuna see valideerib tingimuse iga kord kaudselt.
PL/SQL tsükli süntaks
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Märksõna 'WHILE' tähistab tsükli algust ja 'END LOOP' tähistab lõppu.
- Väljumistingimust hinnatakse iga kord enne täitmisosa käivitamist.
- Täitmisplokk sisaldab kogu koodi, mis peab käivituma.
- Täitmisosa võib sisaldada mis tahes käivitatavat lauset.
Näide Oracle PL/SQL While Loop
Selles näites prindime WHILE tsükli abil numbreid 1-st 5-ni.

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 Selgitus:
- Code rida 2: Muutuja 'a' deklareerimine väärtusena 'NUMBER' ja selle initsialiseerimine väärtusega '1'.
- Code rida 4: Lause „Programm käivitatud” printimine.
- Code rida 5: Märksõna 'WHILE' tähistab tsükli algust ja kontrollib, kas 'a' väärtus on väiksem või võrdne 5-ga.
- Code rida 7: Prindib 'a' väärtuse.
- Code rida 8: Suurendab 'a' väärtust 1 võrra.
- Code rida 9: Märksõna 'END LOOP' tähistab täitmisploki lõppu.
- Ridade 7 ja 8 täitmine jätkub seni, kuni 'a' saavutab väärtuse 6, mille järel tingimus tagastab väärtuse FALSE ja juhtimine väljub silmus.
- Code rida 10: Avalduse „Programm lõpetatud” printimine.
WHILE-tsükkel vs FOR-tsükkel vs põhitsükkel
PL/SQL pakub kolme tüüpi tsükleid ja õige valimine hoiab koodi selgena. WHILE tsükkel sobib tingimuspõhiseks korduseks, ülejäänud kaks aga fikseeritud arvu või selgesõnaliselt kontrollitud väljumiseks.
| Silmus | Väljumiskriteeriumid | Parim kasutada siis, kui |
|---|---|---|
| WHILE-tsükkel | Ülemine tingimus muutub vääraks | Iteratsioonide arv pole teada |
| FOR silmus | Loendur jõuab vahemiku lõppu | Iteratsioonide arv on teada |
| Põhiline tsükkel | Selgesõnaline VÄLJASÕIT kvartalis | Väljapääs on käsitsi juhitav |
Kuna WHILE tsükkel testib oma tingimust alguses, võib tsükli sisu käivituda null korda, kui tingimus on algusest peale väär. See on peamine erinevus tavalisest tsüklist, mille põhiosa käivitub alati vähemalt üks kord.
Lõpmatu While-tsükli vältimine
WHILE-tsükkel sõltub täielikult juhtmuutuja liikumisest väljumistingimuse suunas. Kui see kunagi ei juhtu, töötab tsükkel igavesti ja seanss hangub. Selle vältimiseks on kolm harjumust:
- Muutke loendurit iga kord. Näites suurendatakse tsükli sees väärtust 'a'; selle rea eemaldamine tähendaks lõputut tsüklit.
- Testi piiri. Veenduge, et tingimus saab muutuda vääraks ainult algväärtuse korral, mitte ainult ideaalsel juhul.
- Lisage turvaline VÄLJAPÄÄS, MILLAL. Andmepõhise tsükli puhul toimib EXIT WHEN maksimaalse iteratsioonide arvu korral kaitsena ootamatu väärtuse eest.
Kui korduste arv on tõeliselt fikseeritud, kõrvaldab FOR-tsükkel riski täielikult, kuna selle loendurit hallatakse automaatselt.
