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.