在#tables中使用Object_id()函数

时间:2011-12-06 14:51:22

标签: sql sql-server

我想确保我的数据库中是否存在临时表。

我尝试使用OBJECT_ID()函数,但似乎我不能将它用于临时表。

如何解决此问题?

4 个答案:

答案 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)

来自SQL Server Codebook

How do you check if a temp table exists?
You can use IF OBJECT_ID('tempdb..#temp') IS NOT NULL

SQL脚本

--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 . ]