In Oracle PL/SQL, l'istruzione WHILE LOOP esegue il codice scritto tra WHILE LOOP e END LOOP finché la condizione non è vera. Di seguito riporto alcuni esempi di istruzione Oracle WHILE LOOP.
Sintassi
WHILE logical_condition LOOP -- some PL/SQL code END LOOP;
Esempi di Oracle WHILE LOOP
1. Ripeti 10 volte e stampa la tabella
Nell'esempio seguente, WHILE LOOP eseguirà le istruzioni finché il valore della variabile n_num non sarà minore o uguale a 10. stamperà la tabella di 2 incrementando il valore della variabile n_num con 1 per ogni iterazione del ciclo.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; n_table number := 2; BEGIN n_num := 1; WHILE n_num <= 10 LOOP DBMS_OUTPUT.put_line ('2 x ' || n_num || ' = '||(n_table * n_num)); n_num := n_num + 1; END LOOP; END; /
Uscita:
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 PL/SQL procedure successfully completed.
Non dimenticare di incrementare il valore della variabile n_num, in modo che possa arrivare fino a 10, altrimenti sarà un ciclo infinito.
2. Per eseguire il ciclo finché il valore della variabile booleana non è VERO
Nell'esempio seguente, verrà eseguito il ciclo finché il valore della variabile booleana b_run non sarà TRUE e stamperà il valore della variabile n_num incrementandolo con 1 per ogni iterazione e quando il valore della variabile n_num è maggiore di 5, imposterà la variabile b_run su FALSE , in modo che WHILE LOOP possa finire il suo lavoro.
SET SERVEROUTPUT ON; DECLARE n_num NUMBER; b_run BOOLEAN := TRUE; BEGIN n_num := 1; WHILE b_run LOOP DBMS_OUTPUT.put_line (n_num || ' Times'); n_num := n_num + 1; IF n_num > 5 THEN b_run := FALSE; END IF; END LOOP; END; /
Uscita:
1 Times 2 Times 3 Times 4 Times 5 Times PL/SQL procedure successfully completed.
Anche per questo, non dimenticare di impostare il valore della variabile b_run su FALSE, altrimenti sarà un ciclo infinito. Puoi anche scrivere exit; invece di b_run :=FALSE; istruzione per uscire dal ciclo .
Vedi anche:
- Esempio Oracle FOR LOOP REVERSE
- Programma PL/SQL per stampare i dettagli dei dipendenti