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.
