How do I drop table variables in SQL-Server? Should I even do this?

前端 未结 7 1931
执笔经年
执笔经年 2020-12-12 18:58

I have a table variable in a script (not a stored procedure). Two questions:

  1. How do I drop the table variable? Drop Table @varName gives an \"Incorrect snyta
相关标签:
7条回答
  • 2020-12-12 19:04

    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.

    0 讨论(0)
  • 2020-12-12 19:07

    Table variables are automatically local and automatically dropped -- you don't have to worry about it.

    0 讨论(0)
  • 2020-12-12 19:07

    Here is a solution

    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;
    

    Works fine on SQL Server 2014 Christophe

    0 讨论(0)
  • 2020-12-12 19:14

    Temp table variable is saved to the temp.db and the scope is limited to the current execution. Hence, unlike dropping a Temp tables e.g drop table #tempTable, we don't have to explicitly drop Temp table variable @tempTableVariable. It is automatically taken care by the sql server.

    drop table @tempTableVariable -- Invalid
    
    0 讨论(0)
  • 2020-12-12 19:15

    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.

    0 讨论(0)
  • 2020-12-12 19:23

    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

    The scope of a variable is the range of Transact-SQL statements that can reference the variable. The scope of a variable lasts from the point it is declared until the end of the batch or stored procedure in which it is declared.

    0 讨论(0)
提交回复
热议问题