Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Já existe um objeto chamado '#columntable' no banco de dados


As tabelas temporárias não são descartadas automaticamente no final de uma consulta, apenas quando a conexão atual com o banco de dados é descartada ou você as exclui explicitamente com DROP TABLE #columntable

Teste a existência da tabela no início da consulta ou sempre exclua-a no final (de preferência ambos)

EDIT:Como Matrin disse em seu comentário, isso é realmente um erro de análise. Você obtém o mesmo erro se analisar apenas o SQL como quando o executa.

Para testar isso, separei sua consulta e tentei:
if exists (select 1 from emp where id = 6)
  create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
  create table #columntable (oldcolumns varchar(100))
GO

O analisador está feliz com isso. Curiosamente, se você mudar para usar tabelas não temporárias, a consulta original analisa bem (percebo os problemas que criariam, estava apenas interessado em descobrir por que a consulta não seria analisada).