我已经搜索了StackOverFlow,并没有找到任何。
有没有办法让我知道表变量是否已经存在?
类似的东西:
IF OBJECT_ID('tempdb..#tbl') IS NOT NULL
DROP TABLE #tbl
但是对于表格 Var ...
答案 0 :(得分:4)
表变量,因为它们是变量,不同于临时或非临时表,因为它们不是创建的 - 它们是声明的。在这方面,他们更接近“正常”变量而不是表格。
因此,在讨论表变量的存在时,就像在讨论任何变量的存在时一样有意义:如果你在源代码中声明了这个东西,那么它从那个点开始直到它的作用域结束,在SQL Server中,已知它是批处理或声明它的存储过程/函数。如果你没有声明变量并试图在你的代码中引用它,你的代码将无法编译,如果可能的话,使任何存在检查毫无意义。
也许,如果您觉得需要在脚本中删除并重新创建/声明一个表变量,那么您应该考虑使用临时表。
答案 1 :(得分:1)
表变量@table
与临时表#table
略有不同
表变量@table
需要在临时表#table
创建时声明
因此,根据定义,声明变量存在于其定义的范围(Begin
和End
)语句之间。所以不需要删除表变量。
但是如果要删除/删除表变量,可以使用delete @table
语句。
答案 2 :(得分:0)
我知道这是一个老线程,但希望这可能会帮助那些降落在这里的人。从SSMS开发时,您可能希望重新运行一个选择表变量的语句(例如select * into #tblvarFoo from dbName.schema.Foo
)。但是,第二次运行它时,会出现已存在的错误。所以,你决定先放弃它。但是,你有OP的问题:
在我放桌子之前,我应该检查它是否存在,否则我会 得到例外......
您不必删除表变量或检查其是否存在。 只需重新连接(在查询窗口中右键单击并选择“连接 - >更改连接...”),就像之前一样在同一服务器/数据库中。