Procédure stockée et nom de table dynamique
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 :
Code:
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 |
Et j'obtiens l'erreur (en exécutant la procédure) :
#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 :
Code:
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 |
Là ça fonctionne, avez-vous une idée du problème ?
Merci.