T-SQL判斷是否存在表、臨時表


利用SQL SERVER的系統函數 object_id() 可以判斷是否存在表、臨時表,

object_id() 的作用是返回架構范圍內對象的數據庫對象標識。(即返回系統視圖  sys.objects 的 object_id 字段值)

 

語法:

OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 
    object_name' [ ,'object_type' ] )

 返回值是 int 類型,如果對象不存在則返回 null 。

 

判斷是否存在表

if object_id(N'dbo.Info_City',N'U') is not null
    print '存在表'
else
    print '不存在表'

 

判斷是否存在臨時表

if object_id(N'tempdb.dbo.#TEMP2',N'U') is not null
    print '存在#TEMP2'
else
    print '不存在#TEMP2'

注意:判斷臨時表需要指定臨時數據庫 tempdb 

 

判斷其他架構范圍內的對象

因為函數object_id() 返回的是架構范圍內對象的數據庫對象標識,意味着例如表、視圖、約束、存儲過程等其他架構范圍內對象也可以通過上述方法判斷其存在性。

例如,判斷存儲過程僅需稍稍修改對象名和對象類型即可:

if object_id(N'dbo.P_Base_GetServerInfo',N'P') is not null
    print '存在存儲過程'
ELSE
    print '不存在存儲過程'

注:存儲過程的 object_type 為 P,其他的架構范圍內對象以及對應的 object_type 字段值可以從我上一篇查找到。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM