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:
A l'exécution, cette procédure donne l'erreur suivante:
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 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|
Qu'en pensez vous?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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
Auriez vous svp une idée des raisons de l'erreur? Merci!
Partager