语法:
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] )
参数:
'object_name'
要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。
架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。
返回类型:int
注意:对于空间索引,OBJECT_ID 返回 NULL。
出现错误时,返回 NULL。
用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_ID)可能返回 NULL。
当该参数对系统函数可选时,则采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟括号。
当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。
系统函数可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。示例:
A.返回指定对象的对象 ID
以下示例返回 AdventureWorks 数据库中 Production.WorkOrder 表的对象 ID。
USE master;
GO
SELECT OBJECT_ID(N'AdventureWorks2012.Production.WorkOrder') AS 'Object ID';
GO
B.验证对象是否存在
以下示例通过验证表是否具有对象 ID 来检查指定表的存在性。如果该表存在,则将其删除。如果该表不存在,则不执行 DROP TABLE 语句。
USE AdventureWorks2012;
GO
IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL
DROP TABLE dbo.AWBuildVersion;
GO