DECLARE CONTINUE HANDLER FOR NOT FOUND
bonjour,
Je lit actuellement un livre consacré à mysql et je suis tombé sur la syntaxe " DECLARE CONTINUE HANDLER FOR NOT FOUND SET fincurs := 1;" , que je n'arrive pas à comprendre. J'ai mis ci-dessous la procédure dans laquelle elle est présente, quelqu'un saurait 'il m'expliquer s'il vous plait ,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| delimiter $
DROP PROCEDURE bdutil.cursex1$
CREATE PROCEDURE bdutil.cursex1()
BEGIN
DECLARE fincurs BOOLEAN DEFAULT 0;
DECLARE v_brevet VARCHAR(6);
DECLARE v_nbHv DECIMAL(7,2);
DECLARE v_comp VARCHAR(4);
DECLARE curs CURSOR FOR
SELECT brevet,nbHVol,comp
FROM bdutil.Pilote FOR UPDATE; ---Déclaration du curseur avec verrou.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fincurs := 1;
SET AUTOCOMMIT = 0;
OPEN curs;
FETCH curs INTO v_brevet,v_nbHv,v_comp;
WHILE (NOT fincurs) DO ---Chargement et parcours du curseur.
IF (v_comp='AF') THEN
UPDATE bdutil.Pilote SET nbHVol = nbHVol + 100 ---Mise à jour de la table Pilote par lintermédiaire du curseur.
WHERE brevet = v_brevet;
ELSEIF (v_comp='SING') THEN
UPDATE bdutil.Pilote SET nbHVol = nbHVol - 100 WHERE brevet = v_brevet;
ELSE
DELETE FROM bdutil.Pilote WHERE brevet = v_brevet;
END IF;
FETCH curs INTO v_brevet,v_nbHv,v_comp;
END WHILE;
CLOSE curs;
COMMIT; ---Validation de la transaction.
END;
$ |
Merci beaucoup pour votre aide