Oracle PL/SQL FOR LOOP med eksempel
Hvad er For Loop?
"FOR LOOP"-sætning er bedst egnet, når du ønsker at udføre en kode et kendt antal gange i stedet for baseret på nogle andre forhold.
I denne løkke vil den nedre grænse og den højere grænse blive specificeret, og så længe løkkevariablen er mellem dette område, vil løkken blive udført.
Sløjfevariablen er selvinkrementel, så ingen eksplicit stigningsoperation er nødvendig i denne sløjfe. Løkkevariablen behøver ikke at blive erklæret, da den erklæres implicit.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Syntaks forklaring:
- I ovenstående syntaks markerer nøgleordet 'FOR' begyndelsen af løkken og 'END LOOP' markerer slutningen af løkken.
- Loop-variablen evalueres hver gang før eksekveringsdelen.
- Udførelsesblokken indeholder al den kode, der skal udføres. Udførelsesdelen kan indeholde en hvilken som helst udførelseserklæring.
- Loopvariablen erklæres implicit under udførelsen af hele loopet, og omfanget af denne loop_variable vil kun være inde i denne loop.
- Hvis sløjfevariablen kom ud af området, vil kontrol forlade sløjfen.
- Løkken kan fås til at fungere i omvendt rækkefølge ved at tilføje nøgleordet 'REVERSE' før nedre_grænse.
Eksempel 1: I dette eksempel skal vi udskrive nummer fra 1 til 5 ved hjælp af FOR loop-sætning. Til det vil vi udføre følgende kode.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Kodeforklaring:
- Kodelinje 2: Udskrivning af erklæringen "Program started".
- Kodelinje 3: Nøgleordet 'FOR' markerer begyndelsen af løkken, og loop_variablen 'a' erklæres. Det vil nu have værdien fra 1 til 5
- Kodelinje 5: Udskriver værdien af 'a'.
- Kodelinje 6: Nøgleordet 'END LOOP' markerer slutningen af udførelsesblokken.
- Koden fra linje 5 vil fortsætte med at eksekvere, indtil 'a' når værdien 6, da betingelsen vil mislykkes, og styringen vil EXIT fra løkken.
- Kodelinje 7: Udskrivning af erklæringen "Program gennemført"
Indlejrede sløjfer
Løkkeudsagn kan også indlejres. Den ydre og den indre løkke kan være af forskellige typer. I den indlejrede løkke, for hver en iterationsværdi af den ydre løkke, vil den indre løkke blive eksekveret fuldt ud.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Syntaks forklaring:
- I ovenstående syntaks har den ydre sløjfe en sløjfe mere inde i den.
- Sløjferne kan være af enhver type, og udførelsesfunktionalitetsdelen er den samme.
Eksempel 1: I dette eksempel skal vi udskrive nummer fra 1 til 3 ved hjælp af FOR loop-sætning. Hvert tal vil blive udskrevet lige så mange gange som dets værdi. Til det vil vi udføre følgende kode.
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; /
Kodeforklaring:
- Kodelinje 2: Erklærer variablen 'b' som 'NUMBER' datatype.
- Kodelinje 4: Udskrivning af erklæringen "Program started".
- Kodelinje 5: Nøgleordet 'FOR' markerer begyndelsen af løkken, og loop_variablen 'a' erklæres. Det vil nu have værdien fra 1 til 3
- Kodelinje 7: Nulstilling af værdien af 'b' til '1' hver gang.
- Kodelinje 8: Inner mens løkke kontrollerer betingelsen a>=b.
- Kodelinje 10: Udskriver værdien af 'a', så længe ovenstående betingelse er opfyldt.
- Kodelinje 14: Udskrivning af erklæringen "Program gennemført"
Resumé
Loop | FOR Loop |
---|---|
EXIT-kriterier | Afslut, når tælleren når grænsen |
Brug | God at bruge, når sløjfetælling, der skal udføres, er kendt. |