Bonjour,
J'aimerais savoir s'il est possible de passer un tableau comme paramètre à une procédure stockée. Si oui, auriez-vous un lien à me proposer ou un exemple de code pertinent?
Merci à l'avance.
Bonjour,
J'aimerais savoir s'il est possible de passer un tableau comme paramètre à une procédure stockée. Si oui, auriez-vous un lien à me proposer ou un exemple de code pertinent?
Merci à l'avance.
Perso je préfère
1 ouvrir ma connection
2 crée une table temporaire (Ex: #TMP)
3 remplire la table en question (De toute façon il faut faire transité les infos sur le réseau)
4 lancer la procédure stocker
5 Fermé la connection (les tables avec # s'éfface toutes seules)
Pour récupérer une table c'est
1 ouvrir ma connection
2 crée une table temporaire (Ex: #TMP)
3 lancer la procédure stocker
4 Lire la table
5 Fermé la connection (les tables avec # s'éfface toutes seules)
Attention si la table temporaire est crée dans la proc elle n'est plus disponible apres la fin de la proc
Evidament il est possible de faire les deux en meme temps.
Florent
Hello !
Perso, j'ai résolu le problème en utisant une fonction. Cette fonction accepte un paramètre text dans lequel j'ai mis mes critères de requêtes. La fonction traite simplement la chaine soit par longueur (liste d'UID) ou par séparateur (,).
Ma fonction retourne un variable de type Table que j'utilise ennsuite des mes requêtes.
Après test, c'est plus rapide qu'une table temporaire.
Voilà une adresse pour des exemples :
http://www.sommarskog.se/arrays-in-sql.html#iterative
Voili voilou !
Ps : si c'est pas dans la FAQ comme question et que le pb est résolu je pense que ce serait une bonne chose de l'ajouter !
Merci pour l'information. J'ai testé "iter_intlist_to_table" (voir lien) et ça fonctionne très bien avec une liste d'entiers. Reste à le retester avec une liste de string. Je ne sais pas si c'est parce que je travaille avec MSDE, mais pour moi, ça fonctionne comme ça à l'appel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 ALTER PROCEDURE sp_appelerFctTabulaire ( @ids varchar(50) ) AS SET NOCOUNT ON IF @ids IS NOT NULL BEGIN SET IDENTITY_INSERT _tblTestInsererTable ON INSERT _tblTestInsererTable ( num_position, num_valeur) SELECT i.listpos, i.number FROM iter_intlist_to_table( @ids ) i SET IDENTITY_INSERT _tblTestInsererTable OFF END ELSE RAISERROR( 'La liste est nulle', 16,1) --EXEC sp_appelerFctTabulaire '9 152 33 56 89' RETURN
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager