OBJECT_DEFINITION (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure

Возвращает исходный текст Transact-SQL определения указанного объекта.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

OBJECT_DEFINITION ( object_id )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

object_id
Идентификатор объекта, который будет использован. Аргумент object_id имеет тип int и представляет объект, который находится в контексте текущей базы данных.

Типы возвращаемых данных

nvarchar(max)

Исключения

Возвращает значение NULL в случае ошибки или если участник не имеет разрешений для просмотра объекта.

Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые пользователю были предоставлены разрешения. Это означает, что встроенные функции, создающие метаданные, такие как OBJECT_DEFINITION, могут вернуть значение NULL в случае, если пользователь не имеет разрешений на объект. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Комментарии

Компонент Компонент SQL Server Database Engine предполагает, что объект с идентификатором 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_owner, db_ddladmin и db_securityadmin .

Примеры

A. Возвращение исходного текста пользовательского объекта

В следующем примере возвращается определение пользовательского триггера uAddress в схеме Person. Встроенная функция OBJECT_ID используется, чтобы передать идентификатор объекта триггера в инструкцию OBJECT_DEFINITION.

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

Б. Возвращение исходного текста системного объекта

В следующем примере возвращается определение системной хранимой процедуры 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)