[Procédure Stockée] Paramétrage dynamique
Bonjour bonjour ^^
J'ouvre ce topic plus à titre informatif que pour répondre à un problème technique.
Après quelques recherches sur le net, il semblerait qu'il ne soit pas possible de définir dynamiquement une liste de paramètres pour une procédure stockée.
Je m'explique : dans un cas d'utilisation où il serait pratique de sélectionner une ou plusieurs valeurs possibles pour une sélection, comment faudrait-il s'y prendre pour paramétrer une procédure stockée en fonction de cette liste ?
Il existe plusieurs méthodes d'après ce que j'ai pu voir mais principalement, c'est basé sur l'utilisation de CONCAT pour construire la requête dans la procédure, et concaténer, par exemple, l'argument donné dans une clause "champ IN (..., ..., ...)"
Code:
1 2 3 4 5 6
|
SET @query = CONCAT("SELECT *
FROM table1
WHERE champ1 IN (", "1, 2, 3", ")";
PREPARE stmt FROM @query;
EXECUTE stmt ; |
Sauf que voila, je suis pas très fan de ce genre de solution "bricolo" :/ Et je me demandait s'il n'existait pas une meilleure solution à ce problème ?
Ce qui ouvre plusieurs questions :
- Est-ce qu'il s'agit d'un défaut de conception de MySQL connu ? Est-ce qu'il est possible de faire ça avec d'autres SGBD ?
- Ou bien, est-ce que je me fourvoie et mon approche du problème n'est pas correcte ? Dans le sens où si c'est pas faisable, c'est parce qu'il existe une autre manière de faire ou que, conceptuellement parlant, ce n'est pas une bonne méthode
- Ou bien, je me trompe dans mon raisonnement et utiliser CONCAT est une bonne méthode, largement répandue ? :)
Merci pour votre aide, amis développeurs :mrgreen:
PS: Je travaille avec PHPMyAdmin