v_i message
2
Avant IF
v_i message
3
Avant IF
v_i message
3
Après IF
Attention à ne pas faire de boucle infinie avec ITERATE, on oublie facilement que cette instruction empêche
l'exécution de toutes les instructions qui la suivent dans la boucle. Si j'avais mis par exemple SET v_i = v_i + 1;
après ITERATE et non avant, la boucle serait restée coincée à v_i = 2.
La boucle LOOP
On a gardé la boucle LOOP pour la fin, parce qu'elle est un peu particulière. En effet, voici sa syntaxe :
Code : SQL
[label:] LOOP
instructions
END LOOP [label]
Vous voyez bien : il n'est question de condition nulle part. En fait, une boucle LOOP doit intégrer dans ses instructions un
élément qui va la faire s'arrêter : typiquement une instruction LEAVE. Sinon, c'est une boucle infinie.
Exemple : à nouveau une procédure qui affiche les nombres entiers de 1 à p_nombre.
Code : SQL
DELIMITER |
CREATE PROCEDURE compter_jusque_loop(IN p_nombre INT)
BEGIN
DECLARE v_i INT DEFAULT 1;
boucle_loop: LOOP
SELECT v_i AS nombre;
SET v_i = v_i + 1;
IF v_i > p_nombre THEN
LEAVE boucle_loop;
END IF;
END LOOP;
END |
DELIMITER ;
CALL compter_jusque_loop(3);
En résumé
Un bloc d'instructions est délimité par BEGIN et END. Il est possible d'imbriquer plusieurs blocs d'instructions.
Une variable locale est définie dans un bloc d'instructions grâce à la commande DECLARE. Une fois la fin du bloc
d'instructions atteinte, toutes les variables locales qui y ont été déclarées sont supprimées.
Partie 5 : Sécuriser et automatiser ses actions
292/414
www.openclassrooms.com
2
Avant IF
v_i message
3
Avant IF
v_i message
3
Après IF
Attention à ne pas faire de boucle infinie avec ITERATE, on oublie facilement que cette instruction empêche
l'exécution de toutes les instructions qui la suivent dans la boucle. Si j'avais mis par exemple SET v_i = v_i + 1;
après ITERATE et non avant, la boucle serait restée coincée à v_i = 2.
La boucle LOOP
On a gardé la boucle LOOP pour la fin, parce qu'elle est un peu particulière. En effet, voici sa syntaxe :
Code : SQL
[label:] LOOP
instructions
END LOOP [label]
Vous voyez bien : il n'est question de condition nulle part. En fait, une boucle LOOP doit intégrer dans ses instructions un
élément qui va la faire s'arrêter : typiquement une instruction LEAVE. Sinon, c'est une boucle infinie.
Exemple : à nouveau une procédure qui affiche les nombres entiers de 1 à p_nombre.
Code : SQL
DELIMITER |
CREATE PROCEDURE compter_jusque_loop(IN p_nombre INT)
BEGIN
DECLARE v_i INT DEFAULT 1;
boucle_loop: LOOP
SELECT v_i AS nombre;
SET v_i = v_i + 1;
IF v_i > p_nombre THEN
LEAVE boucle_loop;
END IF;
END LOOP;
END |
DELIMITER ;
CALL compter_jusque_loop(3);
En résumé
Un bloc d'instructions est délimité par BEGIN et END. Il est possible d'imbriquer plusieurs blocs d'instructions.
Une variable locale est définie dans un bloc d'instructions grâce à la commande DECLARE. Une fois la fin du bloc
d'instructions atteinte, toutes les variables locales qui y ont été déclarées sont supprimées.
Partie 5 : Sécuriser et automatiser ses actions
292/414
www.openclassrooms.com
