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 :

[SQLServer2k] [ProStock] insertions multiples a partir d'une chaine


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 58
    Par défaut [SQLServer2k] [ProStock] insertions multiples a partir d'une chaine
    Bonjour,

    Je dois faire des calculs et des regroupements à partir de certaines données.
    Je souhaite donc passer la totalité de ces données à une procédure stockée, les stocker dans une table temporaire, effectuer le calcul, les regroupements,... et retourner le résultat.

    ma chaine est du type : 1|5|100.33|0;3|2|46.78|1
    chaque ligne est séparée par un point-virgule, chaque colonne est séparée par un | . Je passe cette chaine à ma procédure stockée ci-dessous :
    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 PROCEDURE verifier_budget_echange
    -----------------------------------------
    	@strbudgetcampagnes_support nvarchar(2000)
    -----------------------------------------
     AS
    Begin transaction
    declare @arrCampagnes_Supports table(s varchar(1000))
     
    insert @arrCampagnes_Supports 
    Select * from fn_ParseCSVString (@strbudgetcampagnes_support, ';')
    -- tests d'erreur
        test_erreur:
        IF (@@Error <> 0) GOTO on_error
            COMMIT TRAN
            RETURN (0)
        on_error:
            ROLLBACK TRAN
            RETURN (@@Error)
    GO
    Je suis parti sur une fonction qui découpe une chaine en fonction d'un caractère de séparation http://www.mindsdoor.net/SQLTsql/ParseCSVString.html
    et donc pour l'exemple précédent j'obtiens dans un tableau les valeurs suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s
    -------------------
    1|5|100.33|0
    3|2|46.78|1
    Donc dans la seule colonne de mon tableau j'ai bien réussi à découper chaque ligne.
    Maintenant j'aimerais découper chaque "n-uplet" et le stocker dans une table temporaire (ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE #Campagne_Support_Temp (
    Campagne_ID bigint NOT NULL ,
    Support_ID int NOT NULL ,
    budget money NOT NULL ,
    inclus_echange bit NULL)
    mais je ne sais pas comment m'y prendre....

    si quelqu'un pouvait me donner ne serait-ce qu'une piste pour continuer (ou alors me proposer une piste totalement différente car je ne dis pas que ce que j'ai commencé est la meilleure solution loin de là...

    merci d'avance

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Tu as ici (en anglais, désolé) des solutions :
    http://vyaskn.tripod.com/passing_arr...procedures.htm

    Une que j'aime bien, c'est de passer une structure XML dans un paramètre TEXT, que tu parses dans ta procédure et que tu peux utiliser pour faire directement un INSERT avec OPENXML.
    Ca correspond à la méthode 4 du lien ci-dessus

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 58
    Par défaut
    C'est parfait la solution xml que je ne connaissais pas me plait aussi !!
    encore merci

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 03/06/2010, 19h09
  2. Réponses: 9
    Dernier message: 15/01/2006, 20h22
  3. Réponses: 7
    Dernier message: 15/11/2005, 10h14
  4. Enregistrements multiples renvoyés à partir d'une excécution
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2004, 15h25
  5. [Struts]Ecrire un html:link à partir d'une chaine
    Par cowa dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/05/2004, 17h10

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