Recherche…


Syntaxe

  1. BOUCLE
  2. [déclarations];
  3. EXIT WHEN [condition pour la boucle de sortie];
  4. FIN BOUCLE;

Boucle simple

DECLARE
v_counter NUMBER(2);

BEGIN
  v_counter := 0;
  LOOP
    v_counter := v_counter + 1;
    dbms_output.put_line('Line number' || v_counter);
    
    EXIT WHEN v_counter = 10;
  END LOOP;
END;

WHILE Boucle

La boucle WHILE est exécutée jusqu'à ce que la condition de fin soit remplie. Exemple simple:

DECLARE
v_counter NUMBER(2); --declaration of counter variable

BEGIN
  v_counter := 0; --point of start, first value of our iteration
 
  WHILE v_counter < 10 LOOP --exit condition
    
    dbms_output.put_line('Current iteration of loop is ' || v_counter); --show current iteration number in dbms script output
    v_counter := v_counter + 1; --incrementation of counter value, very important step

  END LOOP; --end of loop declaration
END;

Cette boucle sera exécutée jusqu'à ce que la valeur courante de la variable v_counter soit inférieure à dix.

Le résultat:

Current iteration of loop is 0
Current iteration of loop is 1
Current iteration of loop is 2
Current iteration of loop is 3
Current iteration of loop is 4
Current iteration of loop is 5
Current iteration of loop is 6
Current iteration of loop is 7
Current iteration of loop is 8
Current iteration of loop is 9

La chose la plus importante est que notre boucle commence par la valeur "0", donc la première ligne de résultats est "L'itération actuelle de la boucle est 0".

FOR boucle

Loop FOR fonctionne sur des règles similaires à celles d'autres boucles. La boucle FOR est exécutée avec un nombre exact de fois et ce nombre est connu au début - les limites inférieure et supérieure sont directement définies dans le code. À chaque étape de cet exemple, la boucle est incrémentée de 1.

Exemple simple:

DECLARE
v_counter NUMBER(2); --declaration of counter variable

BEGIN
  v_counter := 0; --point of start, first value of our iteration, execute of variable
 
  FOR v_counter IN 1..10 LOOP --The point, where lower and upper point of loop statement is declared - in this example, loop will be executed 10 times, start with value of 1
    
    dbms_output.put_line('Current iteration of loop is ' || v_counter); --show current iteration number in dbms script output
   
  END LOOP; --end of loop declaration
END;

Et le résultat est:

Current iteration of loop is 1
Current iteration of loop is 2
Current iteration of loop is 3
Current iteration of loop is 4
Current iteration of loop is 5
Current iteration of loop is 6
Current iteration of loop is 7
Current iteration of loop is 8
Current iteration of loop is 9
Current iteration of loop is 10

Loop FOR a une propriété supplémentaire, qui fonctionne en sens inverse. Utiliser le mot supplémentaire 'REVERSE' dans la déclaration de la limite inférieure et supérieure de la boucle permet de le faire. Chaque exécution de la boucle décrémente la valeur de v_counter de 1.

Exemple:

DECLARE
v_counter NUMBER(2); --declaration of counter variable

BEGIN
  v_counter := 0; --point of start
 
  FOR v_counter IN REVERSE 1..10 LOOP
    
    dbms_output.put_line('Current iteration of loop is ' || v_counter); --show current iteration number in dbms script output
   
  END LOOP; --end of loop declaration
END;

Et le résultat:

Current iteration of loop is 10
Current iteration of loop is 9
Current iteration of loop is 8
Current iteration of loop is 7
Current iteration of loop is 6
Current iteration of loop is 5
Current iteration of loop is 4
Current iteration of loop is 3
Current iteration of loop is 2
Current iteration of loop is 1


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow