Bonjour j'ai un souci pour réaliser une procédure stockée, car je ne connais pas très bien le T-SQL...

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
CREATE PROCEDURE [dbo].[GET_PRIX_TOTAL]
@REF as varchar(100),
@PRIX_TOTAL as decimal OUTPUT
AS
 
DECLARE @REFORIGINE as varchar(100)
DECLARE @CURREF as varchar(100)
DECLARE @CURQTEOPTION as integer
DECLARE @CUROPTION as varchar(2)
DECLARE @PRIX_OPTION as decimal
 
 
 
IF dbo.FCN_COUNTSTR('%', @REF)=0
BEGIN
	IF (SELECT AR_GAMME1 FROM F_ARTICLE WHERE AR_REF=@REF) = 0
	BEGIN
		SELECT @PRIX_TOTAL=AR_PRIXVEN FROM F_ARTICLE
	END
	ELSE
	BEGIN
		SELECT @PRIX_TOTAL=T.TG_PRIX FROM F_TARIFGAM T LEFT OUTER JOIN F_ARTGAMME G ON T.AG_NO=G.AG_NO1 WHERE G.AR_REF=@REF AND G.EG_ENUMERE = '*'
	END
END
ELSE
BEGIN
-- référence article
	SET @REFORIGINE=SUBSTRING(@REF,0,LEN(SUBSTRING(@REF,0,CHARINDEX('%',@REF))-1)
-- chaine courante de traitement =  sous chaine de la référence article à partir du premier %
	SET @CURREF=SUBSTRING(@REF,CHARINDEX('%',@REF)+1,LEN(@REF)-1)
	WHILE (LEN(@CURREF))>0
	BEGIN
-- quantité de l'option courante = sous chaine de @CURREF à partir du début jusqu'au prochain %
		SET @CURQTEOPTION = cast(SUBSTRING(@CURREF,0,LEN(SUBSTRING(@CURREF,0,CHARINDEX('%',@CURREF)))-1) as int)
-- on décale @CURREF vers la droite juste après le % de la quantité de l'option
		SET @CURREF=SUBSTRING(@CURREF,CHARINDEX('%',@CURREF)+1,LEN(@CURREF)-1)
-- option courante = sous chaine de @CURREF à partir du début jusqu'au prochain %
		SET @CUROPTION = SUBSTRING(@CURREF,0,LEN(SUBSTRING(@CURREF,0,CHARINDEX('%',@CURREF))-1)
--on récupère le prix de l'option
		SELECT @PRIX_OPTION=T.TG_PRIX FROM F_TARIFGAM T LEFT OUTER JOIN F_ARTGAMME G ON T.AG_NO=G.AG_NO1 WHERE G.AR_REF=@REFORIGINE AND G.EG_ENUMERE = @CUROPTION
--on ajoute le prix de l'option x quantité de l'option dans le prix_total
		SET @PRIX_TOTAL = @PRIX_TOTAL + (@CURQTEOPTION * @PRIX_OPTION)	
		SET @CURREF=SUBSTRING(@CURREF,CHARINDEX('%',@CURREF)+1,LEN(@CURREF)-1)
	END
END
RETURN @PRIX_TOTAL
GO
mes erreurs sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Serveur : Msg 156, Niveau  15, État 1, Procédure GET_PRIX_TOTAL, Ligne 30
Incorrect syntax near the keyword 'SET'.
Serveur : Msg 156, Niveau  15, État 1, Procédure GET_PRIX_TOTAL, Ligne 40
Incorrect syntax near the keyword 'SELECT'.
Je n'arrive pas à me dépatouiller de celà.

Pourtant la syntaxe des SET me semble ok, idem pour ma requête...
Je pense donc que je fais quelque chose d'impossible, tout du moins je n'utilise pas la bonne méthode pour parvenir à mes fins...

Merci de votre aide.