Existe-t-il un type de données de liste dans les procédures stockées MySQL ou un moyen de les émuler?
Je voudrais créer une procédure stockée dans le serveur MySQL qui a eu une liste en argument. Par exemple, disons que je voudrais être en mesure de mettre plusieurs balises pour un élément dans un appel, puis ce que je veux faire est de définir une procédure qui prend l'ID de l'élément et une liste de mots pour la définir. Cependant, je n'arrive pas à trouver de toute façon pour ce faire, il n'y a pas de liste type de données, pour autant que je suis au courant, mais peut-il être émulé en quelque sorte? Pourrait la liste des tags être une chaîne séparée par des virgules, qui peuvent en quelque sorte être divisé et en boucle sur?
Comment avez-vous l'habitude de travailler avec des listes dans MySQL procédures stockées?
source d'informationauteur Theo
Vous devez vous connecter pour publier un commentaire.
Cette article a une bonne discussion sur le problème de l'analyse d'un tableau à une procédure stockée depuis procédures stockées permettent seulement valide colonne de la table de données-types de paramètres.
Il y a bien des choses que vous pouvez faire avec le csv type de table dans mysql - c'est si vous êtes le chargement d'un fichier plat dans la db.
Vous pouvez créer une table temporaire dans la procédure stockée, itérer sur les csv liste et l'insérer à la table temporaire, créer un curseur qui sélectionne les valeurs de la table. Cette réponse mentionnés ci-dessus thread affiche un moyen de le faire.
En général, je voudrais diviser le tableau avant d'en arriver à la base de données et ensuite effectuer la requête individuellement sur chaque élément.
Selon le degré de complexité que vous voulez obtenir, vous pouvez utiliser un générique de la table de liaison. Pour l'une de mes applications il y a plusieurs rapports où l'utilisateur peut choisir, par exemple une liste de clients pour exécuter le rapport sur plutôt que juste un seul client à partir d'une liste déroulante. J'ai une table séparée avec 2 champs:
Le pseudo-code ressemble à ceci:
Dans mon langage de programmation de Choix, C#, en fait, je le faire dans l'application elle-même, car la fonction split() les fonctions et les boucles sont plus faciles à programmer en C#, SQL, Cependant!
Peut-être que vous devriez regarder SubString_Index() fonction.
Par exemple, ce qui suit le retour de google:
Ne sais pas si ceux-ci travaillent spécifiquement dans une SP, mais il y a ENUM et de DÉFINIR les types de données dans MySQL 5 qui peut faire ce que vous avez besoin.
http://dev.mysql.com/doc/refman/5.0/en/enum.html
http://dev.mysql.com/doc/refman/5.0/en/set.html