Respuestas:
No puede pasar una llamada a función como argumento a su procedimiento almacenado. En su lugar, use una variable intermedia:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Como mencionó Mitch Wheat, no se puede aprobar una función.
Si en su caso debe pasar un valor precalculado o GETDATE (), puede usar el valor predeterminado. Por ejemplo, modifique su procedimiento almacenado:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
Y luego prueba:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Observación : Aquí supongo que el valor NULL no está en uso para este parámetro. Si no es su caso, puede utilizar otro valor no utilizado, por ejemplo, '1900-01-01 00: 00: 00.000'