construire une requête dynamique ? [MySQL v5] [Procédure Stockée] - SQL/NoSQL - Programmation
Marsh Posté le 19-01-2007 à 16:41:00
Bon finalement, j'ai trouvé :
http://forums.mysql.com/read.php?6 [...] #msg-47813
SET @s = CONCAT('SELECT * FROM authors WHERE id BETWEEN ', _min, ' AND ', _max);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
Marsh Posté le 19-01-2007 à 12:30:05
Bonjour à tous(toutes),
je cherche, sous MySQL v5, dans une procédure stockée, à construire une requête dynamique (au niveau des conditions de sélection -where-, ou de tri -order by-).
En effet, si j'ai 5 paramètres qui me permettent de définir précisément la requête, et que chacun de ces paramètres prennent deux valeurs, ça doit me faire : 5x2 = 10 requêtes possibles.
Or, pour l'instant je ne vois que d'écrire chaque requête : évidemment c'est nul, vive l'explosion combinatoire !
En Java / JDBC, ça prend quelques lignes (on construit au fur et à mesure la requête puis on l'exécute), mais en Proc. Stock., à écrire chaque combinaison possible ça explose le nombre de lignes ... et ça devient ingérable ensuite.
Alors, comment faire ?
N'y a t'il pas la possibilité d'écrire une chaîne de caractères, puis de la faire "traduire" comme une requête ?
Quelque chose du genre :
strRequete = CONCAT (strRequete, [suite de paramètres pour construire la requête])
-- (...)
EXEC(strRequete);
Evidemment, "EXEC" n'existe pas en MySQL ...
Alors, est ce que c'est quand même possible ? Comment faire ?
Merci d'avance si vous avez la réponse.