Istruzione PL / SQL - FOR LOOP

UN FOR LOOP è una struttura di controllo della ripetizione che consente di scrivere in modo efficiente un ciclo che deve essere eseguito un numero specifico di volte.

Sintassi

FOR counter IN initial_value .. final_value LOOP 
   sequence_of_statements; 
END LOOP;

Di seguito è riportato il flusso di controllo in un file For Loop -

  • Il passaggio iniziale viene eseguito per primo e solo una volta. Questo passaggio consente di dichiarare e inizializzare qualsiasi variabile di controllo del ciclo.

  • Successivamente, viene valutata la condizione, ovvero valore_iniziale .. valore_finale . Se è TRUE, viene eseguito il corpo del ciclo. Se è FALSE, il corpo del ciclo non viene eseguito e il flusso di controllo passa all'istruzione successiva subito dopo il ciclo for.

  • Dopo che il corpo del ciclo for viene eseguito, il valore della variabile counter viene aumentato o diminuito.

  • La condizione viene ora valutata di nuovo. Se è TRUE, il ciclo viene eseguito e il processo si ripete (corpo del ciclo, quindi incremento del passo e quindi di nuovo condizione). Dopo che la condizione diventa FALSE, il FOR-LOOP termina.

Di seguito sono riportate alcune caratteristiche speciali di PL / SQL per loop:

  • Il valore_iniziale e valore_finale della variabile loop o contatore possono essere letterali, variabili o espressioni, ma devono restituire i numeri. In caso contrario, PL / SQL solleva l'eccezione predefinita VALUE_ERROR.

  • Il valore_iniziale non deve essere 1; in ogni caso, illoop counter increment (or decrement) must be 1.

  • PL / SQL consente la determinazione della gamma di loop dinamicamente in fase di esecuzione.

Esempio

DECLARE 
   a number(2); 
BEGIN 
   FOR a in 10 .. 20 LOOP 
      dbms_output.put_line('value of a: ' || a); 
  END LOOP; 
END; 
/

Quando il codice precedente viene eseguito al prompt SQL, produce il seguente risultato:

value of a: 10 
value of a: 11 
value of a: 12 
value of a: 13 
value of a: 14 
value of a: 15 
value of a: 16 
value of a: 17 
value of a: 18 
value of a: 19 
value of a: 20  

PL/SQL procedure successfully completed.

Istruzione FOR LOOP inversa

Per impostazione predefinita, l'iterazione procede dal valore iniziale al valore finale, generalmente verso l'alto dal limite inferiore al limite superiore. È possibile invertire questo ordine utilizzando ilREVERSEparola chiave. In tal caso, l'iterazione procede nell'altro modo. Dopo ogni iterazione, il contatore del ciclo viene diminuito.

Tuttavia, è necessario scrivere i limiti dell'intervallo in ordine crescente (non decrescente). Il seguente programma lo illustra:

DECLARE 
   a number(2) ; 
BEGIN 
   FOR a IN REVERSE 10 .. 20 LOOP 
      dbms_output.put_line('value of a: ' || a); 
   END LOOP; 
END; 
/

Quando il codice precedente viene eseguito al prompt SQL, produce il seguente risultato:

value of a: 20 
value of a: 19 
value of a: 18 
value of a: 17 
value of a: 16 
value of a: 15 
value of a: 14 
value of a: 13 
value of a: 12 
value of a: 11 
value of a: 10  

PL/SQL procedure successfully completed.