次の方法で共有


OBJECT_DEFINITION (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

指定したオブジェクトの定義の Transact-SQL ソース テキストを返します。

Transact-SQL 構文表記規則

構文

OBJECT_DEFINITION ( object_id )  

引数

object_id
使用するオブジェクトの ID です。 object_idint, 、現在のデータベース コンテキスト内のオブジェクトが想定されます。

戻り値の型

nvarchar(max)

例外

エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。

ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。 つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (OBJECT_DEFINITION など) が NULL を返す可能性があります。 詳細については、「 Metadata Visibility Configuration」を参照してください。

解説

SQL Server データベース エンジンの場合、object_id が現在のデータベース コンテキスト内にあると想定されます。 オブジェクト定義の照合順序は、呼び出し元のデータベース コンテキストのそれと常に一致します。

OBJECT_DEFINITION は、次の種類のオブジェクトに適用されます。

  • C = CHECK 制約

  • D = 既定値 (制約またはスタンドアロン)

  • P = SQL ストアド プロシージャ

  • FN = SQL スカラー関数

  • R = ルール

  • RF = レプリケーション フィルター プロシージャ

  • TR = SQL トリガー (スキーマ スコープ DML トリガー、またはデータベースまたはサーバー スコープの DDL トリガー)

  • IF = SQL インライン テーブル値関数

  • TF = SQL テーブル値関数

  • V = ビュー

アクセス許可

システム オブジェクトの定義は、公開されます。 ユーザー オブジェクトの定義は、オブジェクトの所有者、または次のいずれかの権限を許可された人が表示できます。ALTER、CONTROL、TAKE OWNERSHIP、VIEW DEFINITION。 これらの権限は db_ownerdb_ddladmin、および db_securityadmin 固定データベース ロールのメンバーが暗黙的に保有します。

A. ユーザー定義オブジェクトのソース テキストを返す

次の例では、ユーザー定義トリガー uAddress の定義を Person スキーマで返します。 組み込み関数 OBJECT_ID を使用して、トリガーのオブジェクト 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)