在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
返回架构范围内对象的数据库对象标识号。
重要提示
使用 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)。