OBJECT_DEFINITION (Transact-SQL)

返回指定对象的定义的 Transact-SQL 源文本。

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

OBJECT_DEFINITION ( object_id )

参数

  • object_id
    要使用的对象的 ID。 object_id 的数据类型为 int,并假定表示当前数据库上下文中的对象。

返回类型

nvarchar(max)

异常

出现错误时或调用方没有权限查看对象时,将返回 NULL。

用户只能查看符合如下条件的安全对象的元数据:该安全对象为该用户所有,或已授予该用户对该安全对象的权限。 这意味着,如果用户对对象没有任何权限,则元数据生成的内置函数(如 OBJECT_DEFINITION)可能返回 NULL。 有关详细信息,请参阅元数据可见性配置

注释

SQL Server 数据库引擎 假定 object_id 位于当前数据库上下文中。 对象定义的排序规则始终与调用数据库上下文的排序规则匹配。

OBJECT_DEFINITION 适用于以下对象类型:

  • C = 检查约束

  • D = 默认值(约束或独立)

  • P = SQL 存储过程

  • FN = SQL 标量函数

  • R = 规则

  • RF = 复制筛选器过程

  • TR = SQL 触发器(架构范围内的 DML 触发器,或数据库或服务器范围内的 DDL 触发器)

  • IF = SQL 内联表值函数

  • TF = SQL 表值函数

  • V = 视图

权限

系统对象定义对所有用户可见。 用户对象的定义对于对象所有者或具有下列任一权限的被授权者可见:ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION。 db_ownerdb_ddladmindb_securityadmin 固定数据库角色的成员隐式具有这些权限。

示例

A.返回用户定义对象的源文本

以下示例返回 Person 架构中的用户定义触发器 uAddress 的定义。 内置函数 OBJECT_ID 用于将触发器的对象 ID 返回到 OBJECT_DEFINITION 语句。

USE AdventureWorks2012;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.uAddress')) AS [Trigger Definition]; 
GO

B.返回系统对象的源文本

以下示例返回系统存储过程 sys.sp_columns 的定义。

USE AdventureWorks2012;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'sys.sp_columns')) AS [Object Definition];
GO

请参阅

参考

元数据函数 (Transact-SQL)

OBJECT_NAME (Transact-SQL)

OBJECT_ID (Transact-SQL)

sp_helptext (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.server_sql_modules (Transact-SQL)