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 :

[SQL2005][RS]Récupération de paramétres multivalue


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [SQL2005][RS]Récupération de paramétres multivalue
    Bonjour,

    J'ai un problème au niveau de la récupération de paramétres multivalués.

    J'utilise 2 paramétres qui sont multivalue dans mon rapport RS (com et pol) et je souhaite envoyer ces paramètres dans ma procédure stockée.

    J'ai utilisé la fonction join pour concaténer ma liste de paramétre en les séparant par une virgule.

    Dans ma procédure stockée, je voudrais récupérer cette liste de paramétre et la stocker dans une table temporaire pour pouvoir injecter ces paramétres dans ma requête.

    Est ce possible ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    Un exemple ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Sous RS, je récupére les valeurs du paramètre Pol qui est multivalue, par exemple : 1,2,3,4,5

    J'ai pris soin d'utiliser la fonction join pour concatener ces valeurs avant de les envoyer à ma proc stock.

    Dans ma proc stock je suis en train de récupérer ces valeurs en les insérant dans une table temporaire à l'aide des fonctions charindex et substring :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE #P (Pol nvarchar(max))
    DECLARE @Pol1 nvarchar(max)
     
    If Charindex(',',@Pol1) = 0
     
    	INSERT INTO #P values (@Pol1) 
     
    	ELSE WHILE (Charindex(',',@Pol1) <> 0)
    			BEGIN
    				INSERT INTO #P values (SUBSTRING(@Pol1,1,Charindex(',',@Pol1)-1))
    				SET @Pol1 = SUBSTRING(@Pol1,Charindex(',',@Pol1),Len(@Pol1))
    			END
    Pour l'instant ma boucle tourne en rond mais j ai bon espoir d'y arriver de cette façon.

    Si tu as une suggestion je suis preneur ...

    Merci.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé.

    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
    CREATE TABLE #P (Pol nvarchar(max)) -- création table temp
     
    DECLARE @Pol1 nvarchar(max) --déclaration var pole
    DECLARE @v int --déclaration var pour stocker la position de la premiere virgule
    DECLARE @L int --déclaration var pour stocker la longueur de la chaîne de caractere
     
    SET @v = Charindex(',',@Pol1) --initialisation
    SET @L = Len(@Pol1) --initialisation
     
     
     
    WHILE (@v <> 0)
    			BEGIN
    				INSERT INTO #P values (SUBSTRING(@Pol1,1,@v-1)) --insertion valeur
    				SET @Pol1 = SUBSTRING(@Pol1,@v+1,@L) --suppression de la partie insérée
    				SET @v = Charindex(',',@Pol1) --mise à jour de la position de la premiere virgule
    				SET @L = Len(@Pol1) --mise à jour de la longueur de la chaine de car
    			END	
     
    INSERT INTO #P values (@Pol1) --insertion de la derniere valeur de la chaine de caractere
    voila le code, si qqu'un a mieux en stock, je suis preneur...

    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2015, 09h14
  2. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11
  3. [jsp]problème lors de la récupération de paramètre, textarea
    Par money mark dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/06/2005, 22h08
  4. Récupération des paramètres en sortie d'1 procédure stockée
    Par navis84 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/12/2004, 11h40
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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