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.

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.

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.
