2010-03-08 12 views

Odpowiedz

107

nie można przejść w wywołaniu funkcji jako argument do swojej procedury. Zamiast używać zmiennej pośredniej:

DECLARE @tmp DATETIME 
SET @tmp = GETDATE() 

EXEC DisplayDate @tmp; 
+6

Czy istnieje powód tego ograniczenia? – xameeramir

14

Jak Mitch Wheat wspomniano nie można przekazać funkcję.

Jeśli w twoim przypadku powinieneś przekazać obliczoną wartość lub GETDATE() - możesz użyć wartości domyślnej. Na przykład zmodyfikować procedurę przechowywaną:

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

    --the SP stuff here 
    SELECT @DateVar 
END 
GO 

a następnie spróbuj:

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

Uwaga: Tutaj mam, że wartość NULL nie jest używana dla tego parametru. Jeśli nie jest to twoja sprawa - możesz użyć innej niewykorzystanej wartości, na przykład "1900-01-01 00: 00: 00.000"

Powiązane problemy