Pergunta

Talvez eu esteja tendo um momento de 'tarde', mas alguém pode explicar por que eu entendo

MSG 102, Nível 15, Estado 1, linha 2
Sintaxe incorreta próxima ')'.

Ao correr

CREATE PROC DisplayDate 
    (@DateVar DATETIME) 
AS 
BEGIN
    SELECT @DateVar
END
GO

EXEC DisplayDate GETDATE();
Foi útil?

Solução

Você não pode passar em uma chamada de função como argumento para o seu procedimento armazenado. Em vez disso, use uma variável intermediária:

DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;

Outras dicas

Como Mitch Wheat mencionado que você não pode passar uma função.

Se, no seu caso, você deve passar em 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 nulo não esteja em uso para este 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' '

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top