xurongjian

利用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 字段值可以从我上一篇查找到。

 

分类:

技术点:

相关文章: