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 (..., ..., ...)"
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SET @query = CONCAT("SELECT * FROM table1 WHERE champ1 IN (", "1, 2, 3", ")"; PREPARE stmt FROM @query; EXECUTE stmt ;
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
PS: Je travaille avec PHPMyAdmin
Partager