Aller au contenu

[Résolu] Procedure stocké mysql


Bab00n

Messages recommandés

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...