如何获得一个临时表的存在,在SQL Server 2008

问题描述:

我写此查询:如何获得一个临时表的存在,在SQL Server 2008

SELECT * INTO #nima FROM Region r 

我每次执行此查询:

SELECT OBJECT_NAME(OBJECT_ID('tempdb..#nima')) 
--or 
SELECT OBJECT_NAME(OBJECT_ID('#nima')) 

我得到NULL,但是当我在上面执行请选择我收到#nima alreadty存在的错误

尝试使用OBJECT_ID函数来确定临时表是否存在:

SELECT object_id('tempdb..#nima') 

或者,如果你想检索对象的名字,则需要使用DB_ID功能为临时数据库指定数据库ID:

SELECT OBJECT_NAME(OBJECT_ID('tempdb..#nima'), DB_ID('tempdb')) 

这给#nima的内部编号为预期tempdb

SELECT OBJECT_ID('tempdb..#nima')) 

OBJECT_NAME获取本地数据库ID。不会有任何对象(除了难得的机会)与ID本地,因为ID来自tempdb中

演示(未经测试!)

USE tempdb 
SELECT OBJECT_NAME(OBJECT_ID('tempdb..#nima')) --#nima + system generated stuff 
USE MyDB 
SELECT OBJECT_NAME(OBJECT_ID('tempdb..#nima')) --null 
-- Now we add DBID for tempdb 
SELECT OBJECT_NAME(OBJECT_ID('tempdb..#nima'), 2) -- #nima + system generated stuff