2
respostas

Nome de objeto '...' inválido?

Olá, tudo certo? No código abaixo, eu tentei replicar o funcionamento das tabelas temporárias assim como na aula, porém utilizei o outro exercício..

Entretanto, aparentemente algo está incorreto pois o código ao ser executado apresenta a seguinte mensagem:

"Msg 208, Level 16, State 0, Line 33 Nome de objeto '#REGISTROSFISCAIS2' inválido."

Alguma ideia do que pode ser?


-- TABELA TEMPORÁRIA VISÍVEL SOMENTE P/ O BLOCO A QUAL ESTÁ SENDO EXECUTADA
DECLARE @REGISTROS_FISCAIS TABLE  (DATA_VENDA DATE, NOTAS_EMITIDAS INT)    

-- TABELA TEMPORÁRIA CONEXÃO ATUAL
IF OBJECT_ID('#REGISTROS_FISCAIS2', 'U') IS NOT NULL
BEGIN
    DROP TABLE #REGISTROS_FISCAIS2
    CREATE TABLE #REGISTROS_FISCAIS2 (DATA_VENDA DATE, NOTAS_EMITIDAS INT)    
END

-- TABELA TEMPORÁRIA P/ TODAS AS CONEXÕES 
IF OBJECT_ID('##REGISTROS_FISCAIS3', 'U') IS NOT NULL
BEGIN
    DROP TABLE ##REGISTROS_FISCAIS3
    CREATE TABLE ##REGISTROS_FISCAIS3 (DATA_VENDA DATE, NOTAS_EMITIDAS INT)    
END

DECLARE @NUM_NOTAS INT, @DT_INICIAL DATE, @DT_FINAL DATE

SET @DT_INICIAL = '20170101'
SET @DT_FINAL = '20170110' 

WHILE @DT_INICIAL <= @DT_FINAL
BEGIN
    SELECT 
        @NUM_NOTAS = COUNT(*) FROM [NOTAS FISCAIS]
    WHERE 
        DATA = @DT_INICIAL

    BEGIN
        INSERT INTO @REGISTROS_FISCAIS (DATA_VENDA, NOTAS_EMITIDAS) VALUES (@DT_INICIAL, @NUM_NOTAS)
        INSERT INTO #REGISTROS_FISCAIS2 (DATA_VENDA, NOTAS_EMITIDAS) VALUES (@DT_INICIAL, @NUM_NOTAS)
        INSERT INTO ##REGISTROS_FISCAIS3 (DATA_VENDA, NOTAS_EMITIDAS) VALUES (@DT_INICIAL, @NUM_NOTAS)
    END

    SELECT @DT_INICIAL = DATEADD(DAY, 1, @DT_INICIAL)
END

SELECT * FROM @REGISTROS_FISCAIS
SELECT * FROM #REGISTROS_FISCAIS2
SELECT * FROM ##REGISTROS_FISCAIS3
2 respostas

Olá Bernardo, tudo bem?

O erro está acontecendo na linha 33 no qual a sua trigger não está encontrando a sua tabela #REGISTROSFISCAIS2. Verifique se ela realmente foi criada.

Espero ter ajudado. Bons estudos e sucesso!

Boa tarde! No trecho abaixo que também faz parte do código completo publicado, eu crio a tabela temporária em tempo de execução assim como as outras.

IF OBJECT_ID('#REGISTROS_FISCAIS2', 'U') IS NOT NULL
BEGIN
    DROP TABLE #REGISTROS_FISCAIS2
    CREATE TABLE #REGISTROS_FISCAIS2 (DATA_VENDA DATE, NOTAS_EMITIDAS INT)    
END

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