Voici d'autres algorithmes pour boucler dans un curseur. Vous pouvez utiliser l'un ou l'autre selon vos préférences.
CREATE PROCEDURE traiter_mecaniciens()
BEGIN
-- entête standard
-- déclaration de variables locales
...
DECLARE fini BOOL DEFAULT 0;
-- déclaration de curseurs
DECLARE c_mecaniciens CURSOR FOR SELECT id, prenom, nomfamille FROM mecaniciens;
-- déclaration de gestionnaires
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini=1;
...
-- traitement
OPEN c_mecaniciens;
REPEAT
FETCH c_mecaniciens INTO l_id, l_prenom, l_nomfamille;
IF NOT fini THEN
...
-- INSERT INTO journalerreurs(message) VALUES(CONCAT('id du mécanicien: ', l_id));
END IF;
UNTIL fini
END REPEAT;
CLOSE c_mecaniciens;
END$$
CREATE PROCEDURE traiter_mecaniciens()
BEGIN
-- entête standard
-- déclaration de variables locales
...
DECLARE fini BOOL DEFAULT 0;
-- déclaration de curseurs
DECLARE c_mecaniciens CURSOR FOR SELECT id, prenom, nomfamille FROM mecaniciens;
-- déclaration de gestionnaires
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini=1;
...
-- traitement
OPEN c_mecaniciens;
mecaniciens_loop: LOOP
FETCH c_mecaniciens INTO l_id, l_prenom, l_nomfamille;
IF fini THEN
LEAVE mecaniciens_loop;
END IF;
...
-- INSERT INTO journalerreurs(message) VALUES(CONCAT('id du mécanicien: ', l_id));
END LOOP mecaniciens_loop;
CLOSE c_mecaniciens;
END$$
▼Publicité