Oracle PL/SQL FOR LOOP con esempio
Cos'è For Loop?
L'istruzione "FOR LOOP" è più adatta quando si desidera eseguire un codice per un numero noto di volte anziché in base ad altre condizioni.
In questo ciclo verranno specificati il limite inferiore e quello superiore e finché la variabile del ciclo si trova tra questo intervallo, il ciclo verrà eseguito.
La variabile del ciclo è autoincrementale, quindi non è necessaria alcuna operazione di incremento esplicita in questo ciclo. La variabile loop non ha bisogno di essere dichiarata, poiché è dichiarata implicitamente.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Spiegazione della sintassi:
- Nella sintassi precedente, la parola chiave "FOR" indica l'inizio del ciclo e "END LOOP" indica la fine del ciclo.
- La variabile del ciclo viene valutata ogni volta prima di eseguire la parte di esecuzione.
- Il blocco di esecuzione contiene tutto il codice che deve essere eseguito. La parte di esecuzione può contenere qualsiasi istruzione di esecuzione.
- La variabile_loop viene dichiarata implicitamente durante l'esecuzione dell'intero ciclo e il suo ambito sarà solo all'interno di questo ciclo.
- Se la variabile del ciclo esce dall'intervallo, il controllo uscirà dal ciclo.
- Il ciclo può essere fatto funzionare in ordine inverso aggiungendo la parola chiave "REVERSE" prima di lower_limit.
esempio 1: In questo esempio, stamperemo un numero da 1 a 5 usando l'istruzione FOR loop. Per questo, eseguiremo il seguente codice.
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; /
Spiegazione del codice:
- Riga di codice 2: Stampa della scritta “Programma avviato”.
- Riga di codice 3: La parola chiave "FOR" segna l'inizio del ciclo e viene dichiarata loop_variable "a". Ora avrà il valore che va da 1 a 5
- Riga di codice 5: Stampa il valore di "a".
- Riga di codice 6: La parola chiave 'END LOOP' segna la fine del blocco di esecuzione.
- Il codice della riga 5 continuerà ad essere eseguito finché 'a' non raggiunge il valore 6, poiché la condizione fallirà e il controllo uscirà dal ciclo.
- Riga di codice 7: Stampa della dicitura “Programma completato”
Loop nidificati
Le istruzioni del ciclo possono anche essere annidate. Il circuito esterno e quello interno possono essere di diversi tipi. Nel ciclo nidificato, per ogni valore di iterazione del ciclo esterno, il ciclo interno verrà eseguito completamente.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Spiegazione della sintassi:
- Nella sintassi precedente, il ciclo esterno ha un ulteriore ciclo al suo interno.
- I loop possono essere di qualsiasi tipo e la parte di funzionalità di esecuzione è la stessa.
esempio 1: In questo esempio, stamperemo un numero da 1 a 3 usando l'istruzione FOR loop. Ogni numero verrà stampato tante volte quanto il suo valore. Per questo, eseguiremo il seguente codice.
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; /
Spiegazione del codice:
- Riga di codice 2: Dichiara la variabile "b" come tipo di dati "NUMERO".
- Riga di codice 4: Stampa della scritta “Programma avviato”.
- Riga di codice 5: La parola chiave "FOR" segna l'inizio del ciclo e viene dichiarata loop_variable "a". Ora avrà il valore che va da 1 a 3
- Riga di codice 7: Reimpostare il valore di "b" su "1" ogni volta.
- Riga di codice 8: Interno mentre il ciclo verifica la condizione a>=b.
- Riga di codice 10: Stampa il valore di 'a' purché la condizione precedente sia soddisfatta.
- Riga di codice 14: Stampa della dicitura “Programma completato”
Sommario
Ciclo continuo | Ciclo FOR |
---|---|
Criteri di uscita | Esci quando il contatore raggiunge il limite |
Impiego | Utile da usare quando si conosce il numero di cicli da eseguire. |