如何在SQL Server中删除表变量?我是否应该这样做?

| 我在脚本中有一个表变量(不是存储过程)。两个问题: 如何删除表变量?删除表@varName会给出“错误的snytax”错误。 我应该一直这样做吗?我听说这是一个好习惯。这样的小脚本真的有必要吗? 这是我的代码:
Declare @projectList table(
    name varchar(40) NOT NULL);

Insert Into @projectList
Values (\'BCR-00021\')

Select *
From @projectList

Drop Table @projectList -- does not work
    
已邀请:
表变量是自动本地变量,并且会自动删除-您不必担心。     
表变量就像int或varchar变量一样。 您无需删除它们。它们具有与int或varchar变量相同的作用域规则   变量的范围是可以引用该变量的Transact-SQL语句的范围。变量的范围从声明的点一直到声明它的批处理或存储过程结束为止。     
如果有人遇到此问题……而您确实需要像在循环中一样将其删除,则只需将其从表变量中删除:
DELETE FROM @tableVariableName
    
但是你们都忘了提及,如果在循环内使用变量表,则在清空循环内的数据之前需要清空(删除@table)。     
就像TempTables一样,还在TempDB中创建一个本地表变量。表变量的范围是在其中声明它的批处理,存储过程和语句块。它们可以在过程之间作为参数传递。当您关闭在其上创建它们的会话时,它们将被自动删除。     
这是一个解决方案
Declare @tablename varchar(20)
DECLARE @SQL NVARCHAR(MAX)

SET @tablename = \'_RJ_TEMPOV4\'
SET @SQL = \'DROP TABLE dbo.\' + QUOTENAME(@tablename) + \'\';

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(@tablename) AND type in (N\'U\'))
    EXEC sp_executesql @SQL;
在SQL Server 2014上运作正常 克里斯多夫     

要回复问题请先登录注册