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