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 ,
Merci beaucoup pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; $
Partager