Eu tenho uma variável de tabela em um script (não um procedimento armazenado). Duas questões:
- Como eu largo a variável da tabela? Soltar tabela @varName fornece um erro "Snytax incorreto".
- Devo sempre fazer isso? Ouvi dizer que é uma boa prática. É realmente necessário para pequenos scripts como este?
Aqui está o meu código:
Declare @projectList table(
name varchar(40) NOT NULL);
Insert Into @projectList
Values ('BCR-00021')
Select *
From @projectList
Drop Table @projectList -- does not work
sql
sql-server
table-variable
jtpereyda
fonte
fonte
Respostas:
As variáveis da tabela são automaticamente locais e eliminadas automaticamente - você não precisa se preocupar com isso.
fonte
Variáveis de tabela são como variáveis int ou varchar.
Você não precisa largá-los. Eles têm as mesmas regras de escopo que as variáveis int ou varchar
fonte
se alguém se deparar com isso ... e você realmente precisar descartá-lo como em um loop, basta excluir todos da variável de tabela:
fonte
Mas todos vocês esqueceram de mencionar que, se uma tabela variável for usada dentro de um loop, ela precisará ser esvaziada (delete @table) antes de carregar os dados novamente dentro de um loop.
fonte
Assim como TempTables, uma variável de tabela local também é criada no TempDB. O escopo da variável de tabela é o lote, procedimento armazenado e bloco de instruções em que é declarado. Eles podem ser passados como parâmetros entre procedimentos. Eles são descartados automaticamente quando você fecha a sessão em que os cria.
fonte
Aqui está uma solução
Funciona bem no SQL Server 2014 Christophe
fonte