Sintaxis incorrecta cerca de ')' que llama al procedimiento almacenado con GETDATE
-
25-09-2019 - |
Pregunta
Tal vez estoy teniendo un momento de 'tarde', pero ¿alguien puede explicar por qué me sale?
Mensaje 102, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca ')'.
al correr
CREATE PROC DisplayDate
(@DateVar DATETIME)
AS
BEGIN
SELECT @DateVar
END
GO
EXEC DisplayDate GETDATE();
Solución
No se puede pasar de una llamada a la función como un argumento para el procedimiento almacenado. En lugar de utilizar una variable intermedia:
DECLARE @tmp DATETIME
SET @tmp = GETDATE()
EXEC DisplayDate @tmp;
Otros consejos
Mitch trigo ha mencionado que no se puede pasar de una función.
Si en tu caso debe pasar en un valor calculado previamente o GETDATE () - se puede utilizar el valor por defecto. Por ejemplo, modificar el procedimiento almacenado:
ALTER PROC DisplayDate
(
@DateVar DATETIME = NULL
) AS
BEGIN
set @DateVar=ISNULL(@DateVar,GETDATE())
--the SP stuff here
SELECT @DateVar
END
GO
Y a continuación, tratar:
EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate
Nota: : Aquí se supone que el valor NULL no está en uso para este parámetro. Si no es su caso - se puede utilizar otro valor no utilizado, por ejemplo, '1900-01-01 00: 00: 00.000'