1
resposta

Gostaria de entender o motivo do erro do meu código

SELECT COUNT(*) FROM [NOTAS FISCAIS]
WHERE DATA IN ('20170101', '20170102')
--Somando todas as notas dos dias 01/01/2017 e 02/01/2017.
CREATE PROCEDURE NumNotasSP
    @DATA_INICIAL AS DATE,
    @DATA_FINAL AS DATE,
    @NUMNOTAS AS INT OUTPUT
AS
BEGIN
    SELECT @NUMNOTAS = COUNT(*) FROM [NOTAS FISCAIS]
    WHERE DATA IN (@DATA_INICIAL, @DATA_FINAL)
--Somando todas as notas dos dias declarados.
END
DECLARE @NUMNOTAS INT
DECLARE @DATA_INICIAL DATE, DECLARE @DATA_FINAL DATE
SET @DATA_INICIAL = '20170101'
SET @DATA_FINAL = '20170102'

EXEC NumNotasSP @DATA_INICIAL = @DATA_INICIAL, @DATA_FINAL = @DATA_FINAL, @NUMNOTAS = @NUMNOTAS OUTPUT

SELECT @NUMNOTAS

Erro que retorna: Mensagem 156, Nível 15, Estado 1, Linha 19 Sintaxe incorreta próxima à palavra-chave 'DECLARE'. Mensagem 137, Nível 15, Estado 1, Linha 20 É necessário declarar a variável escalar "@DATA_INICIAL".

1 resposta

Olá Matheus, tudo bem?

O problema no seu código, é que após a declaração da variável @DATA_INICIAL, você informou uma virgula para depois realizar a declaração da variável @DATA_FINAL

No momento de declarar as variáveis NUMNOTAS ,DATA_INICIAL e DATA_FINAL, o Matheus informou uma vírgula entre as declarações e um por este motivo o erro é retornado

Ao remover a vírgula entre as variáveis o seu código deve funcionar perfeitamente.

SELECT COUNT(*) FROM [NOTAS FISCAIS]
WHERE DATA IN ('20170101', '20170102')
--Somando todas as notas dos dias 01/01/2017 e 02/01/2017.
CREATE PROCEDURE NumNotasSP
    @DATA_INICIAL AS DATE,
    @DATA_FINAL AS DATE,
    @NUMNOTAS AS INT OUTPUT
AS
BEGIN
    SELECT @NUMNOTAS = COUNT(*) FROM [NOTAS FISCAIS]
    WHERE DATA IN (@DATA_INICIAL, @DATA_FINAL)
--Somando todas as notas dos dias declarados.
END
DECLARE @NUMNOTAS INT
DECLARE @DATA_INICIAL DATE
DECLARE @DATA_FINAL DATE
SET @DATA_INICIAL = '20170101'
SET @DATA_FINAL = '20170102'
EXEC NumNotasSP @DATA_INICIAL = @DATA_INICIAL, @DATA_FINAL = @DATA_FINAL, @NUMNOTAS = @NUMNOTAS OUTPUT
SELECT @NUMNOTAS

Espero ter ajudado Matheus e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software