[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:
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:
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:
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à...:roll:
merci d'avance :)