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 :
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
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
et donc pour l'exemple précédent j'obtiens dans un tableau les valeurs suivantes :
Donc dans la seule colonne de mon tableau j'ai bien réussi à découper chaque ligne.
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
Maintenant j'aimerais découper chaque "n-uplet" et le stocker dans une table temporaire (ci-dessous)mais je ne sais pas comment m'y prendre....
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)![]()
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![]()
Partager