Oracle
 sql >> Database >  >> RDS >> Oracle

Esempio di Oracle WHILE LOOP

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