J'ai peut-être un moment d '"après-midi", mais quelqu'un peut-il expliquer pourquoi je reçois
Msg 102, Niveau 15, Etat 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();
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;
Comme Mitch Wheat mentionné, vous ne pouvez pas passer une fonction.
Si, dans votre cas, vous devez transmettre une valeur précalculée ou GETDATE (), vous pouvez utiliser la valeur par défaut. Par exemple, modifiez 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 utilisée pour ce paramètre. Si ce n'est pas votre cas, vous pouvez utiliser une autre valeur non utilisée, par exemple '1900-01-01 00: 00: 00.000'