Exemple : voici la même procédure écrite avec une boucle REPEAT.
Code : SQL
DELIMITER |
CREATE PROCEDURE compter_jusque_repeat(IN p_nombre INT)
BEGIN
DECLARE v_i INT DEFAULT 1;
REPEAT
SELECT v_i AS nombre;
SET v_i = v_i + 1;
-- À ne surtout pas oublier, sinon la
condition restera vraie
UNTIL v_i > p_nombre END REPEAT;
END |
DELIMITER ;
CALL compter_jusque_repeat(3);
Attention, comme la condition d'une boucle REPEAT est vérifiée après le bloc d'instructions de la boucle, on passe au
moins une fois dans la boucle, même si la condition est tout de suite fausse !
Test
Code : SQL
-- Condition fausse dès le départ, on ne rentre pas dans la boucle
CALL compter_jusque_while(0);
-- Condition fausse dès le départ, on rentre quand même une fois
dans la boucle
CALL compter_jusque_repeat(0);
Donner un label à une boucle
Il est possible de donner un label (un nom) à une boucle, ou à un bloc d'instructions défini par BEGIN... END. Il suffit pour
cela de faire précéder l'ouverture de la boucle/du bloc par ce label, suivi de :.
La fermeture de la boucle/du bloc peut alors faire référence à ce label (mais ce n'est pas obligatoire).
Un label ne peut pas dépasser 16 caractères.
Exemples
Code : SQL
-- Boucle WHILE
-- -----------super_while: WHILE condition DO
-- La boucle a pour label
"super_while"
instructions
END WHILE super_while;
-- On ferme en donnant le label
de la boucle (facultatif)
-- Boucle REPEAT
-- ------------repeat_genial: REPEAT
-- La boucle s'appelle
"repeat_genial"
Partie 5 : Sécuriser et automatiser ses actions
287/414
www.openclassrooms.com
Précédent

- 287/413

Suivant