Oracle PL/SQL FOR LOOP med eksempel

⚡ Smart opsummering

Oracle PL/SQL FOR Loop kører en kodeblok et kendt antal gange mellem en nedre og en højere grænse. Loopvariablen deklareres implicit og selvøger, så der er ikke behov for en manuel tæller, og REVERSE-nøgleordet lader løkken tælle nedad.

  • 🔢 Bedst for: En FOR-løkke passer til et kendt iterationsantal snarere end en åben betingelse.
  • 📏 Rækkevidde: En nedre og en øvre grænse definerer, hvor mange gange løkken kører.
  • 🇧🇷 Implicit tæller: Løkkevariablen deklareres automatisk og øges af sig selv.
  • 🎯 Anvendelsesområde: Løkkevariablen findes kun inde i løkken.
  • 🔄 BAGSIDE: Tilføjelse af REVERSE før den nedre grænse får løkken til at tælle ned.
  • 🪜 Indlejret: Loops kan indlejres, og den indre løkke kører fuldt ud for hver ydre iteration.
  • 🚪 Automatisk udgang: Løkken slutter automatisk, når variablen forlader området.

Oracle PL/SQL til løkker

Hvad er en FOR-løkke?

"FOR LOOP"-sætningen er bedst egnet, når du vil udføre kode et kendt antal gange, i stedet for baseret på en anden betingelse.

I denne løkke er en nedre grænse og en øvre grænse angivet, og så længe løkkevariablen er inden for dette område, udføres løkken.

Løkkevariablen er selvinkrementel, så der kræves ingen eksplicit inkrementeringsoperation. Løkkevariablen behøver ikke at blive deklareret, da den deklareres implicit.

FOR <loop_variable> in <lower_limit> .. <higher_limit>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;

Syntaks forklaring:

  • Nøgleordet 'FOR' markerer begyndelsen af ​​løkken, og 'END LOOP' markerer slutningen.
  • Løkkevariablen evalueres hver gang før udførelsesdelen udføres.
  • Udførelsesblokken indeholder al den kode, der skal køres, og kan indeholde enhver eksekverbar sætning.
  • loop_variablen deklareres implicit under udførelsen af ​​løfen, og dens omfang er kun inden for løfen.
  • Når løkkevariablen bevæger sig uden for området, afslutter kontrollen løkken.
  • Løkken kan fås til at fungere i omvendt rækkefølge ved at tilføje nøgleordet 'REVERSE' før lower_limit.

Eksempel 1: I dette eksempel udskriver vi tal fra 1 til 5 ved hjælp af en FOR-løkkesætning.

FOR loop-udskrivning numre 1 til 5

BEGIN
dbms_output.put_line('Program started.');
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code Forklaring:

  • Code linje 2: Udskriver meddelelsen "Program startet".
  • Code linje 3: Nøgleordet 'FOR' markerer starten af ​​løkken, og loop_variablen 'a' erklæres. Den tager nu værdier fra 1 til 5.
  • Code linje 5: Udskriver værdien af ​​'a'.
  • Code linje 6: Nøgleordet 'END LOOP' markerer slutningen af ​​udførelsesblokken.
  • Linje 5 fortsætter med at udføres, indtil 'a' når værdien 6, hvor betingelsen fejler, og kontrollen afslutter løkken.
  • Code linje 7: Udskriver meddelelsen "Program afsluttet".

Indlejrede sløjfer

Loop-sætninger kan også være indlejrede. De ydre og indre løkker kan være af forskellige typer. I en indlejret løkke udføres den indre løkke fuldt ud for hver iteration af den ydre løkke.

Indlejret løkkestruktur

LOOP --outer
<execution block starts>
LOOP --inner
<execution_part>
END LOOP;
<execution_block_ends>
END LOOP;

Syntaks forklaring:

  • Den ydre løkke har endnu en løkke indeni.
  • Løkkerne kan være af enhver type, og udførelsesfunktionaliteten er den samme.

Eksempel 1: I dette eksempel udskriver vi tal fra 1 til 3 ved hjælp af en FOR-løkkesætning. Hvert tal udskrives lige så mange gange som dets værdi.

Eksempel på indlejret FOR-løkke del 1

Eksempel på indlejret FOR-løkke del 2

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started');
FOR a IN 1..3
LOOP
b:= 1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:= b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code Forklaring:

  • Code linje 2: Deklarering af variablen 'b' som datatypen 'NUMBER'.
  • Code linje 4: Udskriver meddelelsen "Program startet".
  • Code linje 5: Nøgleordet 'FOR' markerer starten af ​​løkken, og loop_variablen 'a' erklæres. Den tager nu værdier fra 1 til 3.
  • Code linje 7: Nulstilling af værdien af ​​'b' til '1' hver gang.
  • Code linje 8: Det indre mens løkke kontrollerer betingelsen a>=b.
  • Code linje 10: Udskriver værdien af ​​'a', så længe ovenstående betingelse er opfyldt.
  • Code linje 14: Udskriver meddelelsen "Program afsluttet".

FOR Loop og REVERSE FOR Loop

Som standard tæller et FOR-løkke opad fra den nedre grænse til den øvre grænse. Tilføjelse af REVERSE-nøgleordet får det til at tælle nedad, mens keepping grænserne i samme rækkefølge. Begge former er vist sammen nedenfor, så forskellen er tydelig.

Form Header Rækkefølge af værdier
Stigende FOR EN I 1 .. 5 1, 2, 3, 4, 5
Faldende FOR en OMGIVNING 1 .. 5 5, 4, 3, 2, 1

Bemærk, at selv med REVERSE skrives den nedre grænse stadig før den højere grænse; kun iterationens retning ændres. For løkker, hvis antal ikke er kendt på forhånd, er grundlæggende løkke er det bedre valg.

Ofte Stillede Spørgsmål

Nej. FOR-løkken deklarerer sin variabel implicit, og den findes kun inden for løkken. Deklarering af en variabel med samme navn udenfor påvirker ikke den variabel, der bruges af løkken.

REVERSE får løkken til at iterere fra den øvre grænse ned til den nedre grænse. Grænserne skrives stadig fra lav til høj; kun den rækkefølge, hvori værdierne besøges, vendes om.

Brug en FOR-løkke, når antallet af iterationer er kendt på forhånd, f.eks. et fast interval. Brug en WHILE-løkke, når løkken skal fortsætte, mens en betingelse gælder, og antallet ikke er fast.

Ja, når den grundlæggende løkke blot tæller mellem to faste værdier. AI kan erstatte den manuelle tæller og EXIT med et FOR-område, hvilket gør koden kortere. Bekræft at grænserne matcher originalen.

Nej. Løkkevariablen er skrivebeskyttet inde i løkken, så en tildeling til den forårsager en kompileringsfejl. For at ændre flowet skal du bruge en separat variabel eller afslutte løkken med EXIT.

Opsummer dette indlæg med: