检查表变量是否存在?

时间:2012-01-01 14:56:52

标签: sql-server-2005

我已经搜索了StackOverFlow,并没有找到任何。

有没有办法让我知道表变量是否已经存在?

类似的东西:

 IF OBJECT_ID('tempdb..#tbl') IS NOT NULL
        DROP TABLE #tbl

但是对于表格 Var ...

3 个答案:

答案 0 :(得分:4)

表变量,因为它们是变量,不同于临时或非临时表,因为它们不是创建的 - 它们是声明的。在这方面,他们更接近“正常”变量而不是表格。

因此,在讨论表变量的存在时,就像在讨论任何变量的存在时一样有意义:如果你在源代码中声明了这个东西,那么它从那个点开始直到它的作用域结束,在SQL Server中,已知它是批处理或声明它的存储过程/函数。如果你没有声明变量并试图在你的代码中引用它,你的代码将无法编译,如果可能的话,使任何存在检查毫无意义。

也许,如果您觉得需要在脚本中删除并重新创建/声明一个表变量,那么您应该考虑使用临时表。

答案 1 :(得分:1)

表变量@table与临时表#table略有不同 表变量@table需要在临时表#table创建时声明 因此,根据定义,声明变量存在于其定义的范围(BeginEnd)语句之间。所以不需要删除表变量。

但是如果要删除/删除表变量,可以使用delete @table语句。

答案 2 :(得分:0)

我知道这是一个老线程,但希望这可能会帮助那些降落在这里的人。从SSMS开发时,您可能希望重新运行一个选择表变量的语句(例如select * into #tblvarFoo from dbName.schema.Foo)。但是,第二次运行它时,会出现已存在的错误。所以,你决定先放弃它。但是,你有OP的问题:

  

在我放桌子之前,我应该检查它是否存在,否则我会   得到例外......

您不必删除表变量或检查其是否存在。 只需重新连接(在查询窗口中右键单击并选择“连接 - >更改连接...”),就像之前一样在同一服务器/数据库中。