Odpowiedzi:
Nie możesz przekazać wywołania funkcji jako argumentu do procedury składowanej. Zamiast tego użyj zmiennej pośredniej:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Jak wspomniał Mitch Wheat , nie możesz przekazać funkcji.
Jeśli w twoim przypadku powinieneś podać wstępnie obliczoną wartość lub GETDATE () - możesz użyć wartości domyślnej. Na przykład zmodyfikuj swoją procedurę składowaną:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
A potem spróbuj:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Uwaga : tutaj przypuszczałem, że wartość NULL nie jest używana dla tego parametru. Jeśli to nie Twój przypadek - możesz użyć innej nieużywanej wartości, na przykład „1900-01-01 00: 00: 00.000”