次の方法で共有


OBJECT_DEFINITION (Transact-SQL)

更新 : 2006 年 7 月 17 日

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

OBJECT_DEFINITION ( object_id )

引数

  • object_id
    使用するオブジェクトの ID を指定します。object_id のデータ型は int で、現在のデータベース コンテキストのオブジェクトが想定されます。

戻り値の型

nvarchar(max)

例外

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

SQL Server 2005 では、そのユーザーが所有しているか、または権限を与えられているセキュリティ保護可能なアイテムのメタデータのみを表示できます。つまり、オブジェクトに対する権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (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_ownerdb_ddladmin、および db_securityadmin 固定データベース ロールのメンバが暗黙的に保有します。

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

次の例では、ユーザー定義トリガ uAddress の定義を Person スキーマで返します。組み込み関数 OBJECT_ID を使用して、トリガのオブジェクト ID を OBJECT_DEFINITION ステートメントに返します。

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

B. システム オブジェクトのソース テキストを返す

次の例では、システム ストアド プロシージャ sys.sp_columns の定義を返します。

USE AdventureWorks;
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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • 「例外」に、メタデータの表示に関する記述を追加しました。