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

Escopo da tabela temporária?


Primeiro, as tabelas temporárias locais criadas em um procedimento são eliminadas assim que o procedimento termina. Do BOL em Criar Tabela :

Se o seu código de acesso a dados estiver abrindo corretamente uma conexão, chamando um procedimento armazenado e, em seguida, fechando a conexão, a tabela temporária criada no procedimento será efetivamente destruída.

Eu digo "efetivamente" para trazer outro ponto. Eu não recomendaria descartar a tabela temporária no final do seu procedimento, embora eu adicionasse uma verificação antes de criar a tabela temporária e a descartasse se existir (por exemplo, if object_id('tempdb..#Foo') is not null ). O argumento contra a eliminação da tabela temporária no final é que, ao chamar a instrução Drop, você está forçando o SQL Server a gastar recursos para destruir a tabela ali mesmo enquanto espera o término do procedimento. Se, em vez disso, você deixá-la sair do escopo, seu procedimento será encerrado imediatamente e você permitirá que o SQL Server destrua a tabela em um momento de sua própria escolha.