Respostas:
Você não pode passar uma chamada de função como argumento para seu procedimento armazenado. Em vez disso, use uma variável intermediária:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Como Mitch Wheat mencionou, você não pode passar uma função.
Se, no seu caso, você deve passar um valor pré-calculado ou GETDATE () - você pode usar o valor padrão. Por exemplo, modifique seu procedimento armazenado:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
E então tente:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Observação : aqui eu supunha que o valor NULL não está sendo usado para esse parâmetro. Se não for o seu caso - você pode usar outro valor não utilizado, por exemplo '1900-01-01 00: 00: 00.000'