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.

  • 🔁 Eesmärk: WHILE tsükkel töötab seni, kuni tingimus on tõene, ja peatub niipea, kui see on väär.
  • 🚦 Sissepääsu kontroll: Tingimust testitakse enne plokki, seega tsükkel saab käivituda null korda.
  • 🧮 VÄLJAPÄÄS pole vajalik: Tingimus valideeritakse igas iteratsioonis kaudselt, seega pole otsest EXIT-i vaja.
  • 🔢 Counter: Ploki sees olev muutuja peab muutuma, et tingimus lõpuks muutuks vääraks.
  • ♾️ Lõpmatu risk: Kui loendur ei täida kunagi tingimust, töötab tsükkel igavesti.
  • 🇧🇷 vs FOR: Kasuta WHILE-i, kui iteratsioonide arv on teadmata, ja FOR-i, kui see on fikseeritud.
  • 🚪 Varajane väljumine: EXIT WHEN saab ikkagi WHILE tsüklist lahkuda enne, kui tingimus muutub vääraks.

Oracle PL/SQL While Loop

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.

PL/SQL While Loop näide
PL/SQL While Loop näide
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.

KKK

Jah. Kuna tingimust kontrollitakse enne plokki, siis kui see on alguses väär, siis plokki ei käivitata kunagi. See sisenemiskontroll on peamine erinevus tavalisest tsüklist, mis töötab alati üks kord.

Veenduge, et tsükli sees olev muutuja muutuks iga iteratsiooni järel väljumistingimuse suunas. EXIT WHEN lisamine maksimaalse arvu korral on andmepõhiste tsüklite jaoks kasulik turvavõrk.

Kasuta WHILE-i, kui iteratsioonide arv pole teada ja sõltub tingimusest. Kasuta FOR-i, kui tsükkel toimub fikseeritud vahemiku üle, kuna selle loendurit hallatakse automaatselt.

Tihti. Tehisintellekt saab kontrollida, kas juhtmuutuja liigub väljumistingimuse suunas ja hoiatada, kui see nii ei ole. Tsükli puhul, mille väljumine sõltub reaalajas andmetest, on vaja ikkagi testi, et olla kindel.

Jah. Kuigi WHILE tsükkel väljub, kui selle ülemine tingimus muutub vääraks, saab EXIT või EXIT WHEN tsüklist varem lahkuda, mis on mugav erijuhtumite korral.

Võta see postitus kokku järgmiselt: