Mentre entri in loop Oracle PL/SQL con esempio
⚡ Riepilogo intelligente
Oracle Il ciclo WHILE di PL/SQL ripete un blocco di codice finché una condizione rimane vera. Si tratta di un ciclo di controllo all'ingresso, che verifica la condizione di uscita prima di ogni iterazione, quindi il blocco può essere eseguito zero volte e non richiede la parola chiave EXIT esplicita.

Che cos'è un ciclo While in PL/SQL?
Migliori Mentre il ciclo In PL/SQL, il funzionamento è simile a quello di un ciclo di base, con la differenza che la condizione di uscita si trova all'inizio del ciclo. Funziona come un ciclo con controllo delle entrate, in cui il blocco di esecuzione viene eseguito solo se la condizione è soddisfatta, poiché la condizione di uscita viene verificata prima dell'esecuzione.
Non richiede esplicitamente la parola chiave 'EXIT' per uscire dal ciclo, poiché la condizione viene convalidata implicitamente ogni volta.
Sintassi del ciclo while PL/SQL
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- La parola chiave 'WHILE' indica l'inizio del ciclo e 'END LOOP' ne indica la fine.
- La condizione di uscita viene valutata ogni volta prima dell'inizio dell'esecuzione della parte di programma.
- Il blocco di esecuzione contiene tutto il codice che deve essere eseguito.
- La parte di esecuzione può contenere qualsiasi istruzione eseguibile.
Esempio di Oracle Ciclo while PL/SQL
In questo esempio, stampiamo i numeri da 1 a 5 utilizzando un ciclo WHILE.

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Spiegazione:
- Code riga 2: Dichiarazione della variabile 'a' come 'NUMBER' e inizializzazione con il valore '1'.
- Code riga 4: Stampa del messaggio "Programma avviato".
- Code riga 5: La parola chiave 'WHILE' indica l'inizio del ciclo e verifica se il valore di 'a' è minore o uguale a 5.
- Code riga 7: Stampa il valore di "a".
- Code riga 8: Incrementa il valore di 'a' di 1.
- Code riga 9: La parola chiave 'END LOOP' indica la fine del blocco di esecuzione.
- Le righe 7 e 8 continuano a essere eseguite finché 'a' non raggiunge il valore 6, a quel punto la condizione restituisce FALSE e il controllo esce dal loop.
- Code riga 10: Stampa del messaggio "Programma completato".
Ciclo WHILE vs Ciclo FOR vs Ciclo base
PL/SQL offre tre tipi di cicli, e scegliere quello giusto contribuisce a mantenere il codice pulito. Il ciclo WHILE è adatto a una ripetizione basata su condizioni, mentre gli altri due sono più indicati per un conteggio fisso o per un'uscita controllata esplicitamente.
| Ciclo continuo | Criteri di uscita | primi utilizzati quando |
|---|---|---|
| ciclo WHILE | La condizione in alto diventa falsa | Il numero di iterazioni è sconosciuto |
| Ciclo FOR | Il contatore raggiunge la fine della gamma | Il numero di iterazioni è noto |
| Ciclo base | Uscita esplicita nel blocco | L'uscita è controllata manualmente |
Poiché il ciclo WHILE verifica la sua condizione all'inizio, il corpo potrebbe non essere eseguito nemmeno una volta se la condizione è falsa fin dall'inizio. Questa è la differenza fondamentale rispetto a un ciclo base, il cui corpo viene sempre eseguito almeno una volta.
Evitare un ciclo while infinito
Un ciclo WHILE dipende interamente dal fatto che la variabile di controllo si muova verso la condizione di uscita. Se ciò non accade mai, il ciclo continua all'infinito e la sessione si blocca. Tre accorgimenti impediscono che ciò accada:
- Modifica il contatore a ogni iterazione. Nell'esempio, incremento 'a' all'interno del ciclo; rimuovendo quella riga, il ciclo sarebbe infinito.
- Metti alla prova i limiti. Confermare che la condizione può effettivamente risultare falsa per il valore iniziale, e non solo in un caso ideale.
- Aggiungere un'uscita di sicurezza quando In un ciclo basato sui dati, un'istruzione EXIT WHEN al raggiungimento del numero massimo di iterazioni funge da protezione contro valori imprevisti.
Quando il numero di ripetizioni è effettivamente fisso, un ciclo FOR elimina completamente il rischio, poiché il suo contatore viene gestito automaticamente.
