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.

  • 🔁 Syfte: En WHILE-loop körs medan ett villkor är sant och stoppar så snart det är falskt.
  • 🚦 Inmatningskontroll: Villkoret testas före blocket, så loopen kan köras noll gånger.
  • 🧮 Ingen UTGÅNG behövs: Villkoret valideras implicit vid varje iteration, så ingen explicit EXIT krävs.
  • 🔢 räknare: En variabel inuti blocket måste ändras så att villkoret så småningom blir falskt.
  • ♾️ Oändlig risk: Om räknaren aldrig misslyckas med villkoret, körs loopen för alltid.
  • ⚖️ kontra FÖR: Använd WHILE när iterationsantalet är okänt och FOR när det är fast.
  • 🚪 Tidig utresa: EXIT WHEN kan fortfarande lämna en WHILE-loop innan villkoret blir falskt.

Oracle PL/SQL medan loop

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.

Exempel på PL/SQL While Loop
Exempel på PL/SQL While Loop
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.

Vanliga frågor

Ja. Eftersom villkoret kontrolleras före blocket, körs aldrig kroppen om det är falskt i början. Denna entry-kontroll är den största skillnaden från en grundläggande loop, som alltid körs en gång.

Se till att en variabel inuti loopen ändras mot utgångsvillkoret vid varje iteration. Att lägga till en EXIT WHEN vid maximalt antal är ett användbart säkerhetsnät för datadrivna loopar.

Använd WHILE när antalet iterationer inte är känt och beror på ett villkor. Använd FOR när du loopar över ett fast område, eftersom dess räknare hanteras automatiskt.

Ofta kan AI kontrollera om den styrande variabeln rör sig mot utgångstillståndet och varna när den inte gör det. En loop vars utgång är beroende av livedata behöver fortfarande testas för att vara säker.

Ja. Även om en WHILE-slinga avslutas när dess högsta villkor blir falskt, kan en EXIT eller EXIT WHEN inuti kroppen lämna den tidigt, vilket är praktiskt för att bryta ut i ett specialfall.

Sammanfatta detta inlägg med: