Oracle PL/SQL FOR LOOP met voorbeeld

Wat is ForLoop?

De “FOR LOOP”-instructie is het meest geschikt als u een code een bekend aantal keren wilt uitvoeren in plaats van op basis van andere voorwaarden.

In deze lus worden de ondergrens en de bovengrens gespecificeerd en zolang de lusvariabele zich tussen dit bereik bevindt, wordt de lus uitgevoerd.

De lusvariabele is zelfincrementeel, dus er is geen expliciete incrementele bewerking nodig in deze lus. 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:

  • In de bovenstaande syntaxis markeert het trefwoord 'FOR' het begin van de lus en 'END LOOP' markeert het einde van de lus.
  • De lusvariabele wordt elke keer geëvalueerd voordat het uitvoeringsgedeelte wordt uitgevoerd.
  • Het uitvoeringsblok bevat alle code die moet worden uitgevoerd. Het uitvoeringsgedeelte kan elke uitvoeringsinstructie bevatten.
  • De loop_variable wordt impliciet gedeclareerd tijdens de uitvoering van de gehele lus, en de reikwijdte van deze loop_variable zal alleen binnen deze lus liggen.
  • Als de lusvariabele buiten het bereik valt, verlaat de besturing de lus.
  • De lus kan in omgekeerde volgorde werken door het trefwoord 'REVERSE' toe te voegen vóór lower_limit.

Voorbeeld 1: In dit voorbeeld gaan we getallen van 1 tot 5 printen met behulp van de FOR-lusinstructie. Hiervoor voeren we de volgende code uit.

Oracle PL/SQL VOOR LOOP

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;
/

Code Verklaring:

  • Coderegel 2: Afdrukken van de melding “Programma gestart”.
  • Coderegel 3: Het trefwoord 'FOR' markeert het begin van de lus en lus_variabele 'a' wordt gedeclareerd. Het heeft nu een waarde variërend van 1 tot 5
  • Coderegel 5: Drukt de waarde van 'a' af.
  • Coderegel 6: Het trefwoord 'END LOOP' markeert het einde van het uitvoeringsblok.
  • De code van regel 5 zal doorgaan met uitvoeren totdat 'a' de waarde 6 bereikt, omdat de voorwaarde mislukt en de besturing de lus verlaat.
  • Coderegel 7: Afdrukken van de verklaring “Programma voltooid”

Geneste lussen

De lusinstructies kunnen ook worden genest. De buitenste en binnenste lus kunnen van verschillende typen zijn. In de geneste lus wordt voor elke iteratiewaarde van de buitenste lus de binnenste lus volledig uitgevoerd.

Geneste lussen

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

Syntaxis uitleg:

  • In de bovenstaande syntaxis heeft de buitenste lus nog een lus erin.
  • De lussen kunnen van elk type zijn en het uitvoeringsfunctionaliteitsgedeelte is hetzelfde.

Voorbeeld 1: In dit voorbeeld gaan we getallen van 1 tot 3 printen met behulp van de FOR-lusinstructie. Elk getal wordt net zo vaak geprint als de waarde ervan. Hiervoor voeren we de volgende code uit.

Geneste lussen

Geneste lussen

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 Verklaring:

  • Coderegel 2: De variabele 'b' declareren als gegevenstype 'NUMBER'.
  • Coderegel 4: Afdrukken van de melding “Programma gestart”.
  • Coderegel 5: Het trefwoord 'FOR' markeert het begin van de lus en lus_variabele 'a' wordt gedeclareerd. Het heeft nu een waarde variërend van 1 tot 3
  • Coderegel 7: Elke keer de waarde van 'b' opnieuw instellen op '1'.
  • Coderegel 8: Binnenste herhalingslus controleert op de voorwaarde a>=b.
  • Coderegel 10: Drukt de waarde van 'a' af, zolang aan de bovenstaande voorwaarde wordt voldaan.
  • Coderegel 14: Afdrukken van de verklaring “Programma voltooid”

Samenvatting

Ringleiding For loop
EXIT-criteria Sluit af wanneer de teller de limiet bereikt
Gebruik Goed te gebruiken als het aantal uit te voeren lussen bekend is.

Vat dit bericht samen met: