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 :

Problème de procédure stockée fausse


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Problème de procédure stockée fausse
    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.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Il manque pas une parenthèse fermante à la ligne 30 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @REFORIGINE=SUBSTRING(@REF,0,LEN(SUBSTRING(@REF,0,CHARINDEX('%',@REF))-1)
    Y'a quatre parenthèses ouvrantes et trois parenthèses fermantes

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Oui c'était bien ça le problème (d'ailleurs problème identique pour l'erreur suivante)

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

Discussions similaires

  1. Problème LIKE Procédure stocké SQL Server 2000
    Par Pilhole dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 18/02/2008, 09h24
  2. [SQLServer 2000] Problème accès procédure stockée
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/08/2007, 14h21
  3. [SQLSERVER]Problème de procédure stockée
    Par mikedavem dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/12/2006, 00h17
  4. Réponses: 1
    Dernier message: 17/07/2006, 17h08
  5. Problème de procédure stockée
    Par Sorcier157 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/03/2005, 17h57

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