problème syntaxe procédure stockée
Bonjour!
Le problème à changé donc je pense qu'il mérite son post!
Le problème:
Une table T_RESEAU qui liste des réseaux. Ces réseaux ont 3 champs: ID(pk), intitule, indice.
Un réseau peut être monté de version, auquel cas, un réseau de même intitule et d'indice supérieur sera créé:
Ex: FH-Paris d'indice 0 sera le père du FH-Paris d'indice 1
Il y a dans la base de donnée une contrainte d'unicité sur le couple (nom, indice).
Pour une raison d'évolution (intitule du fils changé par l'utilisateur = lien de paternité perdu) j'ai créé une relation père-fils entre les réseau: foreign key parent_id dans la table T_RESEAU par défaut nulle.
J'aimerais maintenant mettre à jour cette colonne en insérant aux réseaux fils l'id de leur réseau père.
Procédure stockée:
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
| DELIMITER |
CREATE PROCEDURE proc()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE id INT;
DECLARE intitule CHAR(50);
DECLARE id_pere INT;
DECLARE cur CURSOR FOR SELECT RES_ID_N, RES_INTITULE_C FROM T_RESEAU WHERE RES_INDICE_N=1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO id, intitule;
IF done THEN
LEAVE read_loop;
END IF;
id_pere = SELECT RES_ID_N FROM T_RESEAU WHERE RES_INDICE_N=0 AND RES_INTITULE_C LIKE intitule;
UPDATE T_RESEAU SET RES_PARENT = id_pere WHERE RES_ID_N=id;
END LOOP;
CLOSE cur;
END| |
A l'exécution, cette procédure donne l'erreur suivante:
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= SELECT RES_ID_N FROM T_RESEAU WHERE RES_INDICE_N=0 AND RES_INTITULE_C like int' at line 18
Qu'en pensez vous?
Auriez vous svp une idée des raisons de l'erreur? Merci!