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

SQL Server 2005 e escopo de tabela temporária


As tabelas temporárias locais (começam com #) são limitadas à sua sessão; outras sessões, mesmo da mesma string de usuário/conexão, não podem vê-las. As regras para o tempo de vida dependem se a tabela temporária local foi criada em um procedimento armazenado:
  • Uma tabela temporária local criada em um procedimento armazenado é descartada quando o procedimento termina; outros procedimentos armazenados ou o processo de chamada não podem vê-los.
  • Outras tabelas temporárias locais são descartadas quando a sessão termina.

As tabelas temporárias globais (começam com ##) são compartilhadas entre as sessões. Eles são descartados quando:
  • A sessão que os criou termina
  • E nenhuma outra sessão está se referindo a eles

Este comando pode ser útil para ver quais tabelas temporárias existem:
select TABLE_NAME from tempdb.information_schema.tables 

E isso é útil para descartar tabelas temporárias se você não tiver certeza de que elas existem:
if object_id('tempdb..#SoTest') is not null drop table #SoTest

Consulte este artigo do MSDN para obter mais informações.