Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle WHILE LOOP Exemple

Dans Oracle PL/SQL, l'instruction WHILE LOOP exécute le code écrit entre WHILE LOOP et END LOOP jusqu'à ce que la condition soit vraie. Ci-dessous, je donne quelques exemples d'instruction Oracle WHILE LOOP.

Syntaxe

WHILE logical_condition LOOP
-- some PL/SQL code
END LOOP;

Exemples de boucle WHILE Oracle

1. Bouclez 10 fois et imprimez le tableau

Dans l'exemple suivant, WHILE LOOP exécutera les instructions jusqu'à ce que la valeur de la variable n_num soit inférieure ou égale à 10. il imprimera le tableau de 2 en incrémentant la valeur de la variable n_num de 1 à chaque itération de la boucle.

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;
/

Sortie :

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.

N'oubliez pas d'incrémenter la valeur de la variable n_num, afin qu'elle puisse atteindre jusqu'à 10, sinon ce sera une boucle infinie.

2. Pour boucler jusqu'à ce que la valeur de la variable booléenne soit VRAIE

Dans l'exemple suivant, il bouclera jusqu'à ce que la valeur de la variable booléenne b_run soit TRUE et imprimera la valeur de la variable n_num en l'incrémentant de 1 à chaque itération et lorsque la valeur de la variable n_num est supérieure à 5, il définira la variable b_run sur FALSE , afin que WHILE LOOP puisse terminer son travail.

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;
/

Sortie :

1 Times
2 Times
3 Times
4 Times
5 Times
PL/SQL procedure successfully completed.

Pour cela également, n'oubliez pas de définir la valeur de la variable b_run sur FALSE, sinon ce sera une boucle infinie. Vous pouvez également écrire la sortie ; au lieu de b_run :=FALSE ; instruction pour sortir de la boucle .

Voir aussi :

  • Exemple Oracle FOR LOOP REVERSE
  • Programme PL/SQL pour imprimer les détails des employés