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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章