2011-09-07 87 views
0

我寫此查詢:如何獲得一個臨時表的存在,在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存在的錯誤

回答

2

嘗試使用OBJECT_ID函數來確定臨時表是否存在:

SELECT object_id('tempdb..#nima') 

或者,如果你想檢索對象的名字,則需要使用DB_ID功能爲臨時數據庫指定數據庫ID:

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

這給#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 
相關問題