Bonsoir,
Je démarre tout juste avec les procédures stockées sous MySQL et j'ai un soucis lorsque je m'attaque à un nom de table dynamique.
Voici la procédure que j'utilise :
Et j'obtiens l'erreur (en exécutant la procédure) :
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 CREATE PROCEDURE maj (IN paramMarchand VARCHAR(30)) BEGIN DECLARE varIdMarchand INT; DECLARE varTable VARCHAR(35); SET varTable = CONCAT('zzz_', paramMarchand); SET varIdMarchand = (SELECT id_marchand FROM marchands WHERE code_marchand = paramMarchand AND actif = 1); SET @reqMarque = CONCAT('INSERT IGNORE INTO marques (marque) SELECT distinct(marque) FROM ', varTable, ' order by marque'); PREPARE rp FROM @reqMarque; EXECUTE rp; DEALLOCATE PREPARE rp; END
#1312 - PROCEDURE nombase.maj can't return a result set in the given context
Hors si je crée la même avec un nom de table fixe, soit :
Là ça fonctionne, avez-vous une idée du problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE PROCEDURE maj (IN paramMarchand VARCHAR(30)) BEGIN DECLARE varIdMarchand INT; SET varIdMarchand = (SELECT id_marchand FROM marchands WHERE code_marchand = paramMarchand AND actif = 1); INSERT IGNORE INTO marques (marque) SELECT distinct(marque) FROM zzz_machin order by marque'; END
Merci.
Partager