Antworten:
Sie können einen Funktionsaufruf nicht als Argument an Ihre gespeicherte Prozedur übergeben. Verwenden Sie stattdessen eine Zwischenvariable:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Wie Mitch Wheat erwähnt hat, kann man eine Funktion nicht übergeben.
Wenn Sie in Ihrem Fall einen vorberechneten Wert oder GETDATE () übergeben sollten, können Sie den Standardwert verwenden. Ändern Sie beispielsweise Ihre gespeicherte Prozedur:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
Und dann versuchen Sie:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Anmerkung : Hier habe ich angenommen, dass der NULL-Wert für diesen Parameter nicht verwendet wird. Wenn dies nicht der Fall ist, können Sie einen anderen nicht verwendeten Wert verwenden, z. B. '1900-01-01 00: 00: 00.000'.