Vaikka Loop sisään Oracle PL/SQL esimerkin kanssa

⚡ Älykäs yhteenveto

Oracle PL/SQL WHILE -silmukka toistaa koodilohkoa niin kauan kuin ehto pysyy tosi. Se on sisäänmenon tarkistussilmukka, joka testaa poistumisehdon ennen jokaista iteraatiota, joten lohko voi suorittaa nolla kertaa, eikä se tarvitse eksplisiittistä EXIT-avainsanaa.

  • 🔁 Tarkoitus: WHILE-silmukka suoritetaan niin kauan kuin ehto on tosi ja pysähtyy heti, kun se on epätosi.
  • 🚦 Sisäänpääsytarkastus: Ehto testataan ennen lohkoa, joten silmukka voi toimia nolla kertaa.
  • 🧮 ULOSKÄYNTIÄ ei tarvita: Ehto validoidaan implisiittisesti jokaisella iteraatiolla, joten eksplisiittistä EXIT-käskyä ei tarvita.
  • 🔢 laskuri: Lohkon sisällä olevan muuttujan on muututtava, jotta ehto lopulta muuttuu epätosiksi.
  • ♾️ Ääretön riski: Jos laskuri ei koskaan täytä ehtoa, silmukka jatkuu loputtomiin.
  • 🇧🇷 vs. FOR: Käytä WHILE-metodia, kun iteraatioiden määrä on tuntematon, ja FOR-metodia, kun se on kiinteä.
  • 🚪 Varhainen poistuminen: EXIT WHEN voi edelleen poistua WHILE-silmukasta ennen kuin ehto muuttuu arvon epätosi arvoksi.

Oracle PL/SQL While Loop

Mikä on PL/SQL While -silmukka?

Vaikka silmukka PL/SQL:ssä se toimii samalla tavalla kuin perussilmukkalauseke, paitsi että lopetusehto on aivan silmukan alussa. Se toimii kuin sisääntulon tarkistussilmukka, jossa suorituslohko suoritetaan vain, jos ehto täyttyy, koska lopetusehto tarkistetaan ennen suoritusta.

Se ei eksplisiittisesti vaadi 'EXIT'-avainsanaa silmukan lopettamiseksi, koska se vahvistaa ehdon implisiittisesti joka kerta.

PL/SQL While Loop Syntaksi

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • Avainsana 'WHILE' merkitsee silmukan alkua ja 'END LOOP' sen loppua.
  • Poistumisehto arvioidaan joka kerta ennen suoritusosan suorittamisen aloittamista.
  • Suorituslohko sisältää kaiken suoritettavan koodin.
  • Suoritusosa voi sisältää minkä tahansa suoritettavan lausekkeen.

Esimerkki Oracle PL/SQL While Loop

Tässä esimerkissä tulostamme numerot 1-5 käyttämällä WHILE-silmukkalauseketta.

PL/SQL While Loop -esimerkki
PL/SQL While Loop -esimerkki
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 Selitys:

  • Code rivi 2: Muuttujan 'a' määrittäminen muotoon 'NUMBER' ja sen alustaminen arvolla '1'.
  • Code rivi 4: Tulostaa lausekkeen ”Ohjelma käynnistynyt”.
  • Code rivi 5: Avainsana 'WHILE' aloittaa silmukan ja tarkistaa, onko 'a':n arvo pienempi tai yhtä suuri kuin 5.
  • Code rivi 7: Tulostaa a:n arvon.
  • Code rivi 8: Kasvattaa 'a':n arvoa yhdellä.
  • Code rivi 9: Avainsana 'END LOOP' merkitsee suorituslohkon loppua.
  • Rivien 7 ja 8 suoritusta jatketaan, kunnes 'a' saavuttaa arvon 6, jolloin ehto palauttaa arvon EPÄTOSI ja ohjaus poistuu silmukka.
  • Code rivi 10: Tulostaa ilmoituksen ”Ohjelma valmis”.

WHILE-silmukka vs. FOR-silmukka vs. perussilmukka

PL/SQL tarjoaa kolme silmukkatyyppiä, ja oikean valitseminen pitää koodin selkeänä. WHILE-silmukka sopii ehtopohjaiseen toistoon, kun taas kaksi muuta sopivat kiinteään määrään tai eksplisiittisesti kontrolloituun poistumiseen.

Silmukka Poistumiskriteerit Parhaimmillaan käyttää, kun
WHILE-silmukka Yläosassa oleva ehto muuttuu epätosiksi Iteraatioiden määrä on tuntematon
FOR silmukkaa Laskuri saavuttaa alueen rajan Iteraatioiden määrä on tiedossa
Perussilmukka Eksplisiittinen ULOSKÄYNTI korttelissa Uloskäyntiä ohjataan manuaalisesti

Koska WHILE-silmukka testaa ehtoaan alussa, runko voi suorittaa toiminnon nolla kertaa, jos ehto on alusta alkaen epätosi. Tämä on keskeinen ero perussilmukkaan verrattuna, jonka runko suoritetaan aina vähintään kerran.

Äärettömän While-silmukan välttäminen

WHILE-silmukka on täysin riippuvainen siitä, että ohjaava muuttuja liikkuu kohti lopetusehtoa. Jos näin ei koskaan tapahdu, silmukka kestää loputtomiin ja istunto jumiutuu. Kolme tapaa estää tämän:

  • Vaihda laskuri joka toistolla. Esimerkki kasvattaa 'a':n arvoa silmukan sisällä; kyseisen rivin poistaminen johtaisi loputtomaan silmukkaan.
  • Testaa rajaa. Varmista, että ehto voi todella muuttua epätosiksi aloitusarvolle, ei vain ideaalitapauksessa.
  • Lisää turvauloskäynti, kun. Datapohjaisessa silmukassa EXIT WHEN -lauseke suurimmalla iteraatiomäärällä toimii suojana odottamattomilta arvoilta.

Kun toistojen määrä on aidosti kiinteä, FOR-silmukka poistaa riskin kokonaan, koska sen laskuria hallitaan automaattisesti.

UKK

Kyllä. Koska ehto tarkistetaan ennen lohkoa, jos se on alussa epätosi, lohkon runkoa ei koskaan suoriteta. Tämä syöttötarkistus on tärkein ero perussilmukkaan, joka suoritetaan aina kerran.

Varmista, että silmukan sisällä oleva muuttuja muuttuu kohti lopetusehtoa joka iteraatiossa. EXIT WHEN -muuttujalla maksimimäärä on hyödyllinen turvaverkko datapohjaisille silmukoille.

Käytä WHILE-operaattoria, kun iteraatioiden lukumäärää ei tiedetä ja se riippuu ehdosta. Käytä FOR-operaattoria, kun suoritat silmukan kiinteän alueen yli, koska sen laskuria hallitaan automaattisesti.

Usein tekoäly voi tarkistaa, liikkuuko ohjausmuuttuja kohti lopetusehtoa, ja varoittaa, jos se ei liiku. Silmukka, jonka lopetus riippuu reaaliaikaisesta datasta, tarvitsee silti testin varmistaakseen sen.

Kyllä. Vaikka WHILE-silmukka päättyy, kun sen ylin ehto muuttuu epätosiksi, rungon sisällä oleva EXIT- tai EXIT WHEN-käsky voi poistua siitä aikaisemmin, mikä on kätevää erikoistapauksessa tehtävässä loppuun saattamisessa.

Tiivistä tämä viesti seuraavasti: