Oracle PL/SQL FOR LOOP med eksempel
Hva er For Loop?
"FOR LOOP"-setning er best egnet når du ønsker å kjøre en kode et kjent antall ganger i stedet for basert på noen andre forhold.
I denne sløyfen vil den nedre og den øvre grensen spesifiseres, og så lenge sløyfevariabelen er i mellom dette området, vil løkken bli utført.
Løkkevariabelen er selvinkrementell, så ingen eksplisitt inkrementoperasjon er nødvendig i denne løkken. Løkkevariabelen trenger ikke å deklareres, da den er deklarert implisitt.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Syntaks forklaring:
- I syntaksen ovenfor markerer nøkkelordet 'FOR' begynnelsen av løkken og 'END LOOP' markerer slutten på løkken.
- Loop-variabelen evalueres hver gang før utførelsesdelen utføres.
- Utførelsesblokken inneholder all koden som må kjøres. Utførelsesdelen kan inneholde en hvilken som helst utførelseserklæring.
- Løkkevariabelen er deklarert implisitt under kjøringen av hele løkken, og omfanget av denne løkkevariabelen vil bare være innenfor denne løkken.
- Hvis loop-variabelen kom ut av området, vil kontrollen gå ut av loopen.
- Løkken kan fås til å fungere i omvendt rekkefølge ved å legge til nøkkelordet 'REVERSE' før nedre_grense.
Eksempel 1: I dette eksemplet skal vi skrive ut tall fra 1 til 5 ved å bruke FOR loop-setningen. For det vil vi kjø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: Skriver ut setningen "Program started".
- Kodelinje 3: Nøkkelordet 'FOR' markerer begynnelsen av loopen og loop_variable 'a' er deklarert. Den vil nå ha verdien fra 1 til 5
- Kodelinje 5: Skriver ut verdien av 'a'.
- Kodelinje 6: Nøkkelordet 'END LOOP' markerer slutten på utførelsesblokken.
- Koden fra linje 5 vil fortsette å kjøre til 'a' når verdien 6, ettersom tilstanden vil mislykkes, og kontrollen vil EXIT fra løkken.
- Kodelinje 7: Skriver ut erklæringen "Program fullført"
Nestede løkker
Løkkesetningene kan også nestes. Den ytre og indre løkken kan være av forskjellige typer. I den nestede sløyfen, for hver en iterasjonsverdi av den ytre sløyfen, vil den indre sløyfen bli utført fullt ut.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Syntaks forklaring:
- I syntaksen ovenfor har den ytre løkken en løkke til inni seg.
- Sløyfene kan være av alle typer og utførelsesfunksjonalitetsdelen er den samme.
Eksempel 1: I dette eksemplet skal vi skrive ut tall fra 1 til 3 ved å bruke FOR loop-setning. Hvert tall vil bli skrevet ut like mange ganger som verdien. For det vil vi kjø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 variabelen 'b' som 'NUMBER' datatype.
- Kodelinje 4: Skriver ut setningen "Program started".
- Kodelinje 5: Nøkkelordet 'FOR' markerer begynnelsen av loopen og loop_variable 'a' er deklarert. Den vil nå ha verdien fra 1 til 3
- Kodelinje 7: Tilbakestiller verdien av 'b' til '1' hver gang.
- Kodelinje 8: Indre mens løkken ser etter tilstanden a>=b.
- Kodelinje 10: Skriver ut verdien av 'a' så lenge betingelsen ovenfor er oppfylt.
- Kodelinje 14: Skriver ut erklæringen "Program fullført"
Sammendrag
| Loop | FOR Loop |
|---|---|
| EXIT-kriterier | Avslutt når telleren når grensen |
| bruk | God å bruke når løkketellingen som skal utføres er kjent. |




