Comment puis-je passer un “tableau” de valeurs à ma procédure stockée?
Je veux être en mesure de passer à un "tableau" de valeurs à ma procédure stockée, au lieu de l'appeler "Ajouter de la valeur" procédure en série.
Quelqu'un peut-il suggérer une façon de le faire? suis-je manqué quelque chose?
Edit: je vais être en utilisant PostgreSQL /MySQL, je n'ai pas encore décidé.
OriginalL'auteur Orentet | 2009-01-01
Vous devez vous connecter pour publier un commentaire.
Comme Chris l'a souligné, dans PostgreSQL, il n'est pas un problème - tout type de base (comme int, texte) a son propre tableau de sous-type, et vous pouvez également créer des types, y compris le composite. Par exemple:
Maintenant, vous pouvez facilement créer une matrice de test:
Vous pouvez écrire une fonction qui permet de multiplier n*m pour chaque élément dans le tableau, et le retour de somme de produits:
et de l'exécuter:
OriginalL'auteur
Si vous prévoyez d'utiliser MySQL 5.1, il n'est pas possible de passer un tableau.
Voir le MySQL 5.1 faq
Si vous prévoyez d'utiliser PostgreSQL, il est possible de regarder ici
OriginalL'auteur Kb.
Vous ne l'indique pas, mais si vous faites référence à SQL server, voici une façon.
Et le soutien de l'ÉM ref.
OriginalL'auteur Mitch Wheat
Je ne sais pas à propos du passage d'un tableau réel dans ces moteurs (je travaille avec sqlserver), mais voici une idée pour passer une chaîne délimitée et d'analyse dans votre procédure stockée avec cette fonction.
OriginalL'auteur Weej
Pour PostgreSQL, vous pourriez faire quelque chose comme ceci:
Ensuite, vous pouvez passer une chaîne délimitée à votre procédure stockée.
Dire, param1 était une entrée param contenant
'1|2|3|4|5'
La déclaration:
résultats dans un ensemble de résultats qui peuvent être joints ou inséré.
De même, pour MySQL, vous pourriez faire quelque chose comme ceci:
Puis il suffit d'APPELER
spTest_Array('1|2|3|4|5')
devrait produire les mêmes résultats que ci-dessus, PostgreSQL requête.OriginalL'auteur
Incidemment, voici comment vous pourriez ajouter le tableau à une fonction (stockées-proc) appel:
OriginalL'auteur
Grâce à la prise en charge de JSON dans MySQL vous maintenant effectivement avoir la possibilité de passer un tableau à votre MySQL procédure stockée. Créer un JSON_ARRAY et tout simplement passer comme un JSON argument de votre procédure stockée.
Ensuite, dans la procédure, à l'aide de MySQL boucle WHILE et MySQL JSON "cheminement" , accéder à chacun des éléments de la JSON_ARRAY et faire comme vous le souhaitez.
Un exemple ici https://gist.githubusercontent.com/jonathanvx/513066eea8cb5919b648b2453db47890/raw/22f33fdf64a2f292688edbc67392ba2ccf8da47c/json.sql
OriginalL'auteur