Recherche…
Syntaxe
- BOUCLE
- [déclarations];
- EXIT WHEN [condition pour la boucle de sortie];
- 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