Requête SQL dynamique avec nom de table dans une variable
bonjour,
J'utilise MySQL 5.0, et je cherche à créer une requête simple de manière dynamique dans une procédure stockée, en passant dans une variable le nom d'une table, et d'utiliser cette variable dans ma requête sql, par exemple :
Code:
1 2 3 4
| BEGIN
set @tblname="mydb.mytable";
select * from @tblname;
END |
Ce code ne fonctionne évidemment pas (erreur de syntaxe 1064), mais y a-t-il un autre moyen, alors?
Merci.
requête sql dynamique avec nom de table dans une variable
Merci Antoun, ça marche impeccablement.
Numéros d'ordre à incrémenter / décrémenter
Bonjour,
Pardon de déterrer ce vieux sujet mais sa fait un moment que je galère sur google et ce poste est le seul qui m'apporte une réponse, a tel points qu'il m'a conduit à m'inscrire :mrgreen:
Je cherche à faire exactement la même chose, dans une procédure qui pourrai s'appliquer à plusieurs table, mais en vain, je suis pourtant également sur mysql 5 (5.0.51b simulé sur wamp pour être précis).
Je fait bêtement sa, simplement pour tester pour l'instant:
Code:
1 2 3 4 5 6
| CREATE PROCEDURE maProcedure()
BEGIN
DECLARE sqlCMD varChar(500);
set sqlCMD = CONCAT('select * from', 'matable');
PREPARE stmt FROM sqlCMD;
END |
ce qui me donne:
Citation:
#1064 - 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 'sqlCMD;
END' at line 7
si je fait juste PREPARE stmt FROM 'select * from matable', sa roule, mais sa sert a rien...j'ai l'impression que le problème vient que le lui file une variable apres le FROM, elle doit ètre d'un type particulié? sur le site de mysql, il dise juste a ce sujet que çe peut être une chaîne littérale, ou une variable utilisateur.
Y'a pas une autre méthode que les prepared statement ?
un coup demain sa serai cool, surtout que sa devient urgent. Merci d'avance!!