如何在SQL Server中删除表variables? 我应该甚至这样做吗?

我有一个脚本中的表variables(而不是存储过程)。 两个问题:

  1. 如何删除表variables? Drop Table @varName给出“错误的snytax”错误。
  2. 我应该一直这样做吗? 我听说这是一个很好的做法。 这样的小脚本真的有必要吗?

这是我的代码:

Declare @projectList table( name varchar(40) NOT NULL); Insert Into @projectList Values ('BCR-00021') Select * From @projectList Drop Table @projectList -- does not work 

表variables是自动的本地和自动下降 – 你不必担心。

表variables就像int或varcharvariables一样。

你不需要放下它们。 它们与int或varcharvariables具有相同的作用域规则

variables的范围是可以引用variables的Transact-SQL语句的范围。 variables的范围从宣布的地方持续到批处理或存储过程的声明结束。

就像TempTables一样,在TempDB中也创build一个本地表variables。 表variables的范围是它声明的批处理,存储过程和语句块。 它们可以作为程序之间的parameter passing。 当您closures创build它们的会话时,它们会自动丢弃。

但是你们都忘记了,如果在一个循环中使用一个variables表,它将需要在循环中再次加载数据之前清空(删除@table)。

如果有人遇到这个…你真的需要像在循环中一样删除它,你可以从表variables中删除所有:

 DELETE FROM @tableVariableName