簡體   English   中英

如何在SQL Server 2008中獲得臨時表的存在

[英]How to get existence of a temporary table in sql server 2008

我寫了這個查詢:

SELECT * INTO #nima FROM Region r

每次執行此查詢時:

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

我得到NULL,但是當我執行上面的select時,我得到#nima已經存在的錯誤

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

SELECT object_id('tempdb..#nima')

或者,如果您希望檢索對象名稱,則需要使用DB_ID函數為臨時數據庫指定數據庫ID:

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

這將提供tempdb中預期的#nima內部ID

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM