我想确保我的数据库中是否存在临时表。
我尝试使用OBJECT_ID()
函数,但似乎我不能将它用于临时表。
如何解决此问题?
答案 0 :(得分:21)
使用
OBJECT_ID('tempdb..#foo')
在另一个数据库的上下文中运行时获取临时表的id。
答案 1 :(得分:6)
当调用OBJECT_ID时,对于临时表/哈希表 TEMPDB ,必须指定它,除非它已经在工作数据库。
我签入SQL2008并在下面验证。
USE SampleDB
create table #tt1 (dummy int)
select OBJECT_ID('SampleDB..#tt1') -- returns NULL
select OBJECT_ID('tempdb..#tt1') -- returns ID
答案 2 :(得分:2)
How do you check if a temp table exists?
You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL
--Check if it exists
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
BEGIN
PRINT '#temp exists!'
END
ELSE
BEGIN
PRINT '#temp does not exist!'
END
答案 3 :(得分:2)
使用此命令将OBJECT_ID调用的上下文更改为tempdb
OBJECT_ID('tempdb..#table')
OBJECT_ID on MSDN显示3个部分对象名称。在这种情况下,您可以省略schema_name
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]