I have a table variable in a script (not a stored procedure). Two questions:
- How do I drop the table variable? Drop Table @varName gives an "Incorrect snytax" error.
- Should I always do this? I hear it's a good practice. Is it ever really necessary for small scripts like this?
Here's my code:
Declare @projectList table(
name varchar(40) NOT NULL);
Insert Into @projectList
Values ('BCR-00021')
Select *
From @projectList
Drop Table @projectList -- does not work
Just Like TempTables, a local table variable is also created in TempDB. The scope of table variable is the batch, stored procedure and statement block in which it is declared. They can be passed as parameters between procedures. They are automatically dropped when you close that session on which you create them.
But you all forgot to mention, that if a variable table is used within a loop it will need emptying (delete @table) prior to loading with data again within a loop.
if somebody else comes across this... and you really need to drop it like while in a loop, you can just delete all from the table variable:
Table variables are just like int or varchar variables.
You don't need to drop them. They have the same scope rules as int or varchar variables
Table variables are automatically local and automatically dropped -- you don't have to worry about it.