Bonjour,

je travaille avec une base MySQL 4.02 sous linux et je souhaiterai exécuter la procédure suivant :
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
36
37
 
delimiter
 
CREATE PROCEDURE updateConventionRenouvellement()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE idConvF, idConvM INT;
  DECLARE curConv CURSOR FOR
          SELECT t1.CP_ID, t2.CP_ID FROM `CONVENTIONS_CP` t1, `CONVENTIONS_CP` t2
          WHERE t1.`CP_ID_MERE` = 0
          AND t1.`CP_NOM` = t2.`CP_NOM`
          AND t1.`STR_ID` = t2.`STR_ID`
          AND t2.`DS_ID` = (
              SELECT t4.DS_ID FROM DATES_SAISONS_DS t3, DATES_SAISONS_DS t4
              WHERE t3.DS_ID = t1.DS_ID
              AND t4.DS_DEB_SAISON < t3.DS_DEB_SAISON
              ORDER BY t4.DS_DEB_SAISON DESC
              LIMIT 1);
 
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
  OPEN curConv;
 
  REPEAT
    FETCH curConv INTO idConvF, idConvM;
 
    IF NOT done THEN
       UPDATE `CONVENTIONS_CP` t1
       SET t1.CP_ID_MERE = idConvM
       WHERE t1.CP_ID = idConvF;
    END IF;
  UNTIL done END REPEAT;
 
  CLOSE curConv;
END
 
delimiter ;
Pour le moment j'obtiens une erreur 1064 en essayant de lancer le code à partir de la fen