[MySQL v5] [Procédure Stockée] construire une requête dynamique ?

construire une requête dynamique ? [MySQL v5] [Procédure Stockée] - SQL/NoSQL - Programmation

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 !  :cry:  
 
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.
 

Reply

Marsh Posté le 19-01-2007 à 12:30:05   

Reply

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;  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed