Bab00n Posté(e) le 18 mai 2009 Partager Posté(e) le 18 mai 2009 Hello, Je cherche a passé une collection de valeur a une procedure stocker mysql. un exemple tout simple, voila une procédure stocké (qui ne sert a rien, juste pour l'example) : create procedure test (param varchar(255),out test INT) SQL security invoker begin SET NAMES 'latin1'; select count(*) into test from toto where tutu in (param); end; lors de l'apel, "param" vaut "5,7,3". Or mysql exécute bien la requete, saut qu'il ne prend en compte seulement la première valeur de "param" et le count me renvoie 1 au lieu de 3. On dirais qu'il s'arrête a la première virgule. J'ai fais pas mal de recherche, et je n'ai pas trouver de parametre de type array comme en postgresql entre autre. Bien évidement je ne peut pas séparé les variable et construire le in avec, car le nombre de valeur est dynamique. Des idées ? quelqu'un a-t'il déja eu se genre de problématique ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
SnipX Posté(e) le 18 mai 2009 Partager Posté(e) le 18 mai 2009 Bonsoir, effectivement il semblerait que cela ne soit pas possible sans passer par un 'in'... :'( : http://dev.mysql.com/doc/refman/5.0/en/faq...aitem-22-4-1-17 22.4.17: Can I pass an array as input to a stored procedure? Not in MySQL 5.0. D'après le site web ce n'est pas gêré, au moins c'est clair :( Vous n'avez pas moyen de faire cela dans la code plutôt qu'en procédure stockée ? Ce ne sera peut être pas aussi propre, mais bon si c'est pas gêré... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bab00n Posté(e) le 19 mai 2009 Auteur Partager Posté(e) le 19 mai 2009 Merci SnipX. Dans le code c'est pas l'idéale mais j'ai finalement trouvé une autre solution pour contourné cette limite de MySql. Il faut mettre la requête dans une variable a l'intérieur de la procédure stocké, la concaténé avec le paramètre a mettre dans le IN, et exécuter le tout avec un prepare statement :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.