SQL中檢查表是否存在的問題

OBJECTPROPERTY : 返回當前數據庫中對象的有關信息
語法 : OBJECTPROPERTY ( id , property )

例如:
OBJECTPROPERTY (object_id(N'authors') , N'ISTABLE') = 1

select * from dbo.sysobjects where Object_Id(N'myTable') AND OBJECTPROPERTY(id, N'IsTable') = 1
OBJECT_ID:返回數據庫對象標識號。N是顯式的將非unicode字符轉成unicode字符,它來自 SQL-92 標準中的 National(Unicode)數據類型,用於擴展和標準化,在這裏可以不用,寫作object_id(PerPersonData)。

OBJECTPROPERTY:返回當前數據庫中對象的有關信息。1表“真”。同樣可以寫成OBJECTPROPERTY(id, sUserTable) = 1。


整條語句的意思是判斷數據庫裏有沒有存在PerPersonData這樣一張表。


整條語句可以簡寫成:
if exists (select * from sysobjects where objectproperty(object_id('PerPersonData'),'istable') = 1)


判斷myTalbe對象是否是一個表。
If exists (select * from dbo.sysObjects
where id = Object_Id(N'myTable') and ObjectProperty(id, N'IsUserTable') = 1)

判斷myProc對象是否是一個存儲過程。
If exists (select * from dbo.sysObjects
where id = Object_Id(N'myProc') and ObjectProperty(id, N'IsProcedure') = 1)

判斷myFun對象是否是一個自定義、標量值函數。
If exists (select * from dbo.sysObjects
where id = Object_Id(N'myFun') and ObjectProperty(id, N'IsScalarFunction') = 1)

判斷myFun對象是否是一個表值函數。
If exists (select * from dbo.sysObjects
where id = Object_Id(N'myFun') and ObjectProperty(id, N'IsTableFunction') = 1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章