157 votes

Syntaxe incorrecte près de ')' appelant la procédure stockée avec GETDATE

J'ai peut-être un moment d '"après-midi", mais quelqu'un peut-il expliquer pourquoi je reçois

Msg 102, niveau 15, état 1, ligne 2 Syntaxe incorrecte près de ')'.

Lors de l'exécution

 CREATE PROC DisplayDate 
(
@DateVar DATETIME
) AS 
BEGIN
SELECT @DateVar
END

GO

EXEC DisplayDate GETDATE();
 

205voto

Mitch Wheat Points 169614

Vous ne pouvez pas transmettre un appel de fonction en tant qu'argument à votre procédure stockée. Utilisez plutôt une variable intermédiaire:

 DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;
 

27voto

Alexander Points 518

Comme Mitch Blé mentionné, vous ne pouvez pas passer d'une fonction.

Si, dans votre cas, vous devriez passer une valeur précalculée ou GETDATE() - vous pouvez utiliser la valeur par défaut. Par exemple, modifier votre procédure stockée:

ALTER PROC DisplayDate 
(
    @DateVar DATETIME = NULL
) AS 
BEGIN
    set @DateVar=ISNULL(@DateVar,GETDATE())

    --the SP stuff here
    SELECT @DateVar
END
GO

Et puis, essayez:

EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate

Remarque: Ici, j'ai supposé que la valeur NULL n'est pas dans l'utilisation de ce paramètre. Si ce n'est pas votre cas vous pouvez utiliser un autre non utilisé valeur, par exemple "1900-01-01 00:00:00.000'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X