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: