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();
¿Fue útil?

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'

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top