SQL SERVER 中的 object_id()函数

在SQL server中,这个函数其实用的挺多的,如果你没用过,想必你一定在哪里看到过,现在迷迷糊糊,似懂非懂,今天笔者仔细讲解下它的功能。

  大家都知道在数据库中有一个系统表sysobjects,里面存储了数据库各个对象的信息。可以查询下看看结果。可以看出每个对象都有一个ID,这个表存储了表,存储过程,触发器,视图等相关信息。注意:字段没有。

  object_id就是根据对象名称返回该对象的id.
  object_name是根据对象id返回对象名称.
 

  select object_id(对象名)等同于:
  select id from sysobjects where name=对象名

  select object_name(id号)等同于:
  select name from sysobjects where id=id号

  SQL SERVER 2000以上版本都支持这个函数。

另外一种说明:

OBJECT_ID

返回架构范围内对象的数据库对象标识号。

ms190328.note(zh-cn,SQL.90).gif重要提示

  使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'语法:

1 OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] 
2     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

示例:

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

1 USE master;
2 GO
3 SELECT OBJECT_ID(N'AdventureWorks.Production.WorkOrder') AS 'Object ID';
4 GO

B. 验证对象是否存在

1 USE AdventureWorks;
2 GO
3 IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
4 DROP TABLE dbo.AWBuildVersion;
5 GO

另外说明:SQL中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)

 
分类: 数据库
原文地址:https://www.cnblogs.com/linjulin/p/5619756.html