打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL --OBJECT_ID() 总结

 


OBJECT_ID()---返回架构范围内对象的数据库对象标识

语法:

 OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 

    object_name' [,'object_type' ] )

参数:

' object_name '

要使用的对象。object_name 的数据类型为 varchar nvarchar 如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar 可以选择是否指定数据库和架构名称。

' object_type '

架构范围的对象类型。object_type 的数据类型为 varchar nvarchar 如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar 有关对象类型的列表,请参阅 sys.objects(Transact-SQL) 中的 type 列。

返回类型  int

异常


对于空间索引,OBJECT_ID 返回 NULL

出现错误时,返回 NULL

用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回NULL。有关详细信息,请参阅元数据可见性配置元数据可见性故障排除

注释


当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数 据库用户。内置函数后面必须跟括号。

当指定临时表名时,除非当前数据库为 tempdb, 否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')

系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。有关详细信息,请参阅表达式(Transact-SQL)WHERE(Transact-SQL)

示例


A. 返回指定对象的对象 ID

以下示例返回 AdventureWorks2008R2 数据库中 Production.WorkOrder 表的对象 ID

USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2008R2.Production.WorkOrder') AS 'Object ID';
GO

B. 验证对象是否存

以下示例通过验证表是否具有对象ID 来检查指定表的存在性。如果该表存在,则将其删除。如果该表不存在,则不执行 DROP TABLE 语句。

USE AdventureWorks2008R2;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO

C. 使用 OBJECT_ID 指定系统函数的参数

以下示例使用 sys.dm_db_index_operational_stats 函数返回 AdventureWorks2008R2 数据库中 Person.Address 表的所有索引和分区信息。

重要提示

在使用 Transact-SQL 函数 DB_ID OBJECT_ID 返回参数值时,请始终确保返回有效的 ID。如果找不到数据库或对象的名称,例如相应名称不存在或拼写不正确,则两个函数都会返回 NULLsys.dm_db_index_operational_stats 函数将 NULL 解释为指定所有数据库或所有对象的通配符值。由于这可能是无心之举,所以此部分中的示例说明了确定数据库 ID 和对象 ID 的安全方法。

DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address');
IF @db_id IS NULL 
  BEGIN;
    PRINT N'Invalid database';
  END;
ELSE IF @object_id IS NULL
  BEGIN;
    PRINT N'Invalid object';
  END;
ELSE
  BEGIN;
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
  END;
GO

 

判断数据库对象是否存在

if object_id(N'对象名',N'对象类型') is notnull  执行语句

 

可选对象类型:

AF = 聚合函数 (CLR)

C = CHECK 约束

D = DEFAULT(约束或独立)

F = FOREIGN KEY约束

FN = SQL 标量函数

FS = 程序集 (CLR) 标量函数

FT = 程序集 (CLR) 表值函数

IF = SQL 内联表值函数

IT = 内部表

P = SQL 存储过程

PC = 程序集 (CLR) 存储过程

PG = 计划指南

PK = PRIMARYKEY 约束

R = 规则(旧式,独立)

RF = 复制筛选过程

S = 系统基表

SN = 同义词

SQ = 服务队列

TA = 程序集 (CLR) DML 触发器

TF = SQL 表值函数

TR = SQL DML 触发器

U = 表(用户定义类型)

UQ = UNIQUE 约束

V = 视图

X = 扩展存储过程

 

例子

删除用户表

if object_id(N'表名',N'U') is notnull drop table 表名

 

删除存储过程

if object_id(N'存储过程名',N'P') is not null drop procedure 存储过程名

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
sql2005创建存储过程
sys.sysobjects、sys.all
精讲sql server数据库sysObjects表中xtype字段值的含义
l临时表
DBNULL和NULL(转)
SQL Server 2000基础教程——字符串函数(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服