OBJECT_DEFINITION (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

OBJECT_DEFINITION ( object_id )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

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

nvarchar(max)

Исключения

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

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

Замечания

Ядро СУБД 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_owner, db_ddladminи db_securityadmin .

Примеры

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

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

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

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

В следующем примере возвращается определение системной хранимой процедуры sys.sp_columns.

USE AdventureWorks2022;  
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)