OBJECT_DEFINITION (Transact-SQL)
指定したオブジェクトの定義の 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 = CHECK 制約
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 を使用して、トリガーのオブジェクト 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