Oracle PL/SQL FOR LOOP met voorbeeld
⚡ Slimme samenvatting
Oracle Een PL/SQL FOR-lus voert een codeblok een bekend aantal keren uit tussen een onder- en bovengrens. De lusvariabele wordt impliciet gedeclareerd en verhoogt zichzelf, waardoor een handmatige teller niet nodig is. Het trefwoord REVERSE zorgt ervoor dat de lus naar beneden telt.

Wat is een FOR-lus?
De "FOR-lus" is het meest geschikt wanneer je code een bekend aantal keren wilt uitvoeren, in plaats van op basis van een andere voorwaarde.
In deze lus worden een ondergrens en een bovengrens gespecificeerd, en zolang de lusvariabele zich binnen dit bereik bevindt, wordt de lus uitgevoerd.
De lusvariabele is zelfverhogend, dus er is geen expliciete verhogingsbewerking nodig. De lusvariabele hoeft niet te worden gedeclareerd, omdat deze impliciet wordt gedeclareerd.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Syntaxis uitleg:
- Het sleutelwoord 'FOR' markeert het begin van de lus en 'END LOOP' markeert het einde.
- De lusvariabele wordt elke keer gecontroleerd voordat het uitvoeringsgedeelte wordt uitgevoerd.
- Het uitvoeringsblok bevat alle code die moet worden uitgevoerd en kan elke uitvoerbare instructie bevatten.
- De loop_variable wordt impliciet gedeclareerd tijdens de uitvoering van de lus en heeft alleen bereik binnen de lus.
- Als de lusvariabele buiten het bereik komt, wordt de lus verlaten.
- De lus kan in omgekeerde volgorde werken door het trefwoord 'REVERSE' vóór de lower_limit toe te voegen.
Voorbeeld 1: In dit voorbeeld printen we de getallen van 1 tot en met 5 met behulp van een FOR-lus.
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 Uitleg:
- Code lijn 2: De melding "Programma gestart" wordt afgedrukt.
- Code lijn 3: Het sleutelwoord 'FOR' markeert het begin van de lus en de lusvariabele 'a' wordt gedeclareerd. Deze neemt nu waarden aan van 1 tot en met 5.
- Code lijn 5: Drukt de waarde van 'a' af.
- Code lijn 6: Het trefwoord 'END LOOP' markeert het einde van het uitvoeringsblok.
- Regel 5 wordt uitgevoerd totdat 'a' de waarde 6 bereikt, waarna de voorwaarde niet meer geldt en de lus wordt verlaten.
- Code lijn 7: Het bericht "Programma voltooid" afdrukken.
Geneste lussen
Lusinstructies kunnen ook genest worden. De buitenste en binnenste lussen kunnen van verschillende typen zijn. In een geneste lus wordt de binnenste lus volledig uitgevoerd bij elke iteratie van de buitenste lus.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Syntaxis uitleg:
- De buitenste lus heeft nog een lus aan de binnenkant.
- De lussen kunnen van elk type zijn, en de uitvoeringsfunctionaliteit is hetzelfde.
Voorbeeld 1: In dit voorbeeld printen we de getallen van 1 tot en met 3 met behulp van een FOR-lus. Elk getal wordt even vaak afgedrukt als de waarde ervan.
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 Uitleg:
- Code lijn 2: De variabele 'b' declareren als gegevenstype 'NUMBER'.
- Code lijn 4: De melding "Programma gestart" wordt afgedrukt.
- Code lijn 5: Het sleutelwoord 'FOR' markeert het begin van de lus en de lusvariabele 'a' wordt gedeclareerd. Deze neemt nu waarden aan van 1 tot en met 3.
- Code lijn 7: Elke keer de waarde van 'b' opnieuw instellen op '1'.
- Code lijn 8: Het innerlijk herhalingslus controleert op de voorwaarde a>=b.
- Code lijn 10: Drukt de waarde van 'a' af, zolang aan de bovenstaande voorwaarde wordt voldaan.
- Code lijn 14: Het bericht "Programma voltooid" afdrukken.
FOR-lus en omgekeerde FOR-lus
Standaard telt een FOR-lus van onder naar boven, vanaf de ondergrens. Door het sleutelwoord REVERSE toe te voegen, telt de lus omlaag, terwijl de bovengrens behouden blijft.ping De limieten staan in dezelfde volgorde. Beide vormen worden hieronder naast elkaar weergegeven, zodat het verschil duidelijk is.
| Form | Voorvoegsel | Volgorde van waarden |
|---|---|---|
| Oplopend | VOOR een IN 1 .. 5 | 1, 2, 3, 4, 5 |
| Aflopend | VOOR een IN OMGEKEERDE 1 .. 5 | 5, 4, 3, 2, 1 |
Merk op dat zelfs bij REVERSE de ondergrens nog steeds vóór de bovengrens wordt geschreven; alleen de iteratierichting verandert. Voor lussen waarvan het aantal iteraties niet van tevoren bekend is, geldt het volgende: basislus is de betere keuze.




