RELATED_OBJECTS 表関数
RELATED_OBJECTS 表関数は、指定されたデータベース・ファイルに直接または間接的に依存するすべてのオブジェクトのリストを戻します。
リストには、入力データベース・ファイルに直接従属するすべてのオブジェクトが含まれます。 識別された各ビューおよびグローバル変数は、従属が検出されなくなるまで、再帰的に処理され、従属が取得されます。
入力ファイルが SQL 別名、プログラム記述ファイル、またはファイルが見つからない場合は、行は戻されません。
依存関係情報は、データベース相互参照表および SQL カタログから収集されます。 元のステートメントで従属オブジェクトがどのように指定されたかによっては、一部の依存関係が返されない場合があります。 例えば、CREATE FUNCTION ステートメントが非修飾表を参照する場合、従属関係は SQL カタログ・ビュー (SYSROUTINEDEP) では完全ではなく、その後この関数によって戻されることはありません。
許可: 以下の注を参照してください。
- ライブラリー名
- ファイル名を含むライブラリーを識別する文字ストリング式またはグラフィック・ストリング式。 現行サーバー上に存在している必要があります。
- ファイル名
- 関連オブジェクトをリストするデータベース・ファイルを識別する文字ストリング式またはグラフィック・ストリング式。 これはファイルのシステム名でなければなりません。
この関数の結果は、以下の表に示された形式の行を含むテーブルです。 列はすべて NULL 可能です。
列名 | データ・タイプ | 説明 |
---|---|---|
SOURCE_SCHEMA_NAME | VARCHAR(128) | SOURCE_SQL_NAME が入っているスキーマの名前。 |
SOURCE_SQL_NAME | VARCHAR(128) | この行が従属しているオブジェクトの名前です。 |
SQL_OBJECT_TYPE | VARCHAR(24) | 従属オブジェクトの SQL タイプです。
|
SCHEMA_NAME | VARCHAR(128) | SQL_NAME を含む SQL スキーマ。 |
SQL_NAME | VARCHAR(128) | 従属オブジェクトの SQL 名です。
|
LIBRARY_NAME | VARCHAR(10) | 従属オブジェクトのシステム・ライブラリー名。
SQL_OBJECT_TYPE が FOREIGN KEY、FUNCTION、PROCEDURE、および TEXT INDEX の場合は、NULL 値が入ります。 |
SYSTEM_NAME | VARCHAR(279) | 従属オブジェクトの関連するシステム名。
SQL_OBJECT_TYPE が TEXT INDEX の場合は、NULL 値が入ります。 |
OBJECT_OWNER | VARCHAR(10) | オブジェクトの所有者 SQL_OBJECT_TYPE が FUNCTION、MASK、PERMISSION、PROCEDURE、TRIGGER、または VARIABLE の場合、これはオブジェクトの定義者です。 SQL_OBJECT_TYPE が FOREIGN KEY または TEXT INDEX の場合は、NULL 値が入ります。 |
LONG_COMMENT | VARGRAPHIC(2000) CCSID 1200 | オブジェクトの SQL ロング・コメント。 コメントが使用できない場合は、NULL 値が入ります。 |
OBJECT_TEXT | VARGRAPHIC(50) CCSID 1200 | オブジェクトのシステム・テキスト記述。 テキストが使用できない場合は、NULL 値が入ります。 |
LAST_ALTERED | TIMESTAMP | オブジェクトが最後に変更されたときのタイム・スタンプ。 変更できないオブジェクトの場合、これは作成タイム・スタンプです。 SQL_OBJECT_TYPE が FOREIGN KEY の場合は、NULL 値が入ります。 |
注記
このプロシージャーは、SQL 関数を使用して従属情報を見つけるために SQL カタログを使用する方法の例として、SYSTOOLS スキーマに用意されています。 他の Db2® for i 提供ツールと同様に、SQL ソースを抽出して、類似の関数を作成するためのモデルとして使用したり、ユーザー指定のスキーマ内にカスタマイズしたバージョンを作成するために使用したりすることができます。
SYSTOOLS で提供されるサービスには、サービスの実装に使用されるインターフェースによって決定される許可要件があります。 権限要件を理解するには、サービスの SQL を抽出し、実装を調べます。
例
- APPLIB 内の ORDERS ファイルに従属するすべてのオブジェクトをリストします。
SELECT * FROM TABLE(SYSTOOLS.RELATED_OBJECTS( LIBRARY_NAME=>'APPLIB', FILE_NAME =>'ORDERS'));
- APPLIB 内の ORDERS ファイルに従属するすべてのオブジェクトをリストします。 オブジェクトごとに、オブジェクトを検索するために必要な再帰的ステップの数を返します。
SELECT LEVEL, RO.* FROM (VALUES('APPLIB', 'ORDERS')) I(IN_LIB, IN_FILE), TABLE (QSYS2.OBJECT_STATISTICS(IN_LIB, '*FILE', IN_FILE)), TABLE(SYSTOOLS.RELATED_OBJECTS(IN_LIB, IN_FILE)) RO START WITH SOURCE_SCHEMA_NAME = OBJLONGSCHEMA AND SOURCE_SQL_NAME = OBJLONGNAME CONNECT BY SOURCE_SQL_NAME = PRIOR SQL_NAME AND SOURCE_SCHEMA_NAME = PRIOR SCHEMA_NAME ORDER BY 1, 2, 3;