Medan Loop in Oracle PL/SQL med exempel
⚡ Smart sammanfattning
Oracle En PL/SQL WHILE-loop upprepar ett kodblock medan ett villkor förblir sant. Det är en ingångskontrollsloop som testar utgångsvillkoret före varje iteration, så blocket kan köras noll gånger och det behöver inget explicit EXIT-nyckelord.

Vad är en PL/SQL While-loop?
Ocuco-landskapet Medan Loop I PL/SQL fungerar det på liknande sätt som den grundläggande loopsatsen, förutom att exitvillkoret är i början av loopen. Det fungerar som en entry-checking loop, där exekveringsblocket bara körs om villkoret är uppfyllt, eftersom exitvillkoret kontrolleras före exekvering.
Det kräver inte explicit nyckelordet 'EXIT' för att avsluta loopen, eftersom det validerar villkoret implicit varje gång.
Syntax för PL/SQL medan loop
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- Nyckelordet 'WHILE' markerar början på loopen och 'END LOOP' markerar slutet.
- Avslutningsvillkoret utvärderas varje gång innan exekveringsdelen börjar exekveras.
- Exekveringsblocket innehåller all kod som behöver köras.
- Exekveringsdelen kan innehålla vilken körbar sats som helst.
Exempel på Oracle PL/SQL medan loop
I det här exemplet skriver vi ut tal från 1 till 5 med hjälp av en WHILE-loop-sats.

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 Förklaring:
- Code rad 2: Deklarera variabeln 'a' som 'NUMBER' och initiera den med värdet '1'.
- Code rad 4: Skriver ut meddelandet ”Programmet startade”.
- Code rad 5: Nyckelordet 'WHILE' markerar början av loopen och kontrollerar om värdet på 'a' är mindre än eller lika med 5.
- Code rad 7: Skriver ut värdet på 'a'.
- Code rad 8: Ökar värdet på 'a' med 1.
- Code rad 9: Nyckelordet 'END LOOP' markerar slutet på exekveringsblocket.
- Rad 7 och 8 fortsätter att köras tills 'a' når värdet 6, då villkoret returnerar FALSE och kontrollen avslutar slinga.
- Code rad 10: Skriver ut meddelandet ”Program slutfört”.
WHILE-slinga vs. FOR-slinga vs. grundläggande slinga
PL/SQL erbjuder tre looptyper, och att välja rätt typ håller koden tydlig. WHILE-loopen passar en villkorsstyrd upprepning, medan de andra två passar ett fast antal eller en explicit kontrollerad utgång.
| loop | Utgångskriterier | Bäst att använda när |
|---|---|---|
| WHILE-slinga | Villkoret högst upp blir falskt | Iterationsantalet är okänt |
| FÖR slinga | Räknaren når slutet av intervallet | Iterationsantalet är känt |
| Grundslinga | Explicit UTGÅNG i blocket | Utgången styrs manuellt |
Eftersom WHILE-slingan testar sitt villkor högst upp, kan kroppen köras noll gånger om villkoret är falskt från början. Detta är den viktigaste skillnaden från en grundläggande loop, vars kropp alltid körs minst en gång.
Undvika en oändlig While-loop
En WHILE-loop är helt beroende av att den styrande variabeln rör sig mot utgångsvillkoret. Om den aldrig gör det körs loopen för alltid och sessionen hänger sig. Tre vanor förhindrar detta:
- Ändra räknaren vid varje iteration. Exemplet ökar 'a' inuti loopen; att ta bort den raden skulle loopa för evigt.
- Testa gränsen. Bekräfta att villkoret faktiskt kan bli falskt för startvärdet, inte bara för ett idealfall.
- Lägg till en säkerhetsUTGÅNG NÄR. För en datadriven loop fungerar en EXIT WHEN vid ett maximalt iterationsantal som ett skydd mot ett oväntat värde.
När antalet repetitioner verkligen är fast, eliminerar en FOR-slinga risken helt, eftersom dess räknare hanteras automatiskt.
