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;
/
Code Spiegazione:
- Code Linea 2: Stampa della scritta โProgramma avviatoโ.
- Code riga 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
- Code riga 5: Stampa il valore di "a".
- Code riga 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.
- Code riga 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;
/
Code Spiegazione:
- Code Linea 2: Dichiara la variabile "b" come tipo di dati "NUMERO".
- Code Linea 4: Stampa della scritta โProgramma avviatoโ.
- Code riga 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
- Code riga 7: Reimpostare il valore di "b" su "1" ogni volta.
- Code riga 8: Interno mentre il ciclo verifica la condizione a>=b.
- Code riga 10: Stampa il valore di 'a' purchรฉ la condizione precedente sia soddisfatta.
- Code riga 14: Stampa della dicitura โProgramma completatoโ
Sintesi
| 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. |




