IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Passer un tableau à une procédure stockée


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Passer un tableau à une procédure stockée
    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.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    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

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Points : 139
    Points
    139
    Par défaut
    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 !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 18/11/2008, 17h41
  2. Tableau à une procédure stockée
    Par stephane.julien dans le forum Développement
    Réponses: 2
    Dernier message: 30/04/2008, 07h57
  3. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  4. Passer en paramétre un tableau dans une procédure stockée
    Par killysui dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/04/2006, 11h47
  5. Réponses: 7
    Dernier message: 13/12/2005, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo