MON_GET_SECTION_ROUTINE 表関数 - 入力セクションのルーチンのリストの取得
MON_GET_SECTION_ROUTINE 表関数は、入力セクションの実行中に呼び出される可能性のあるすべてのプロシージャー、外部関数、コンパイル済み関数、およびコンパイル済みトリガーのリストを返します。
許可
以下のいずれかの権限が必要です。
- ルーチンに対する EXECUTE 特権
- DATAACCESS 権限
- SQLADM 権限
- DBADM 権限
デフォルトの PUBLIC 特権
なし
構文
スキーマは SYSPROC です。
ルーチン・パラメーター
- 実行可能 ID
- どのセクションについてルーチンのリストを返すかをユニークに識別する、タイプ VARCHAR(32) FOR BIT DATA の入力パラメーター。 この引数が NULL または空ストリングである場合、あるいはセクションがメモリー内に見つからない場合は、SQL0171 が返されます。
戻される情報
列名 | データ・タイプ | 説明または対応するモニター・エレメント |
---|---|---|
ROUTINE_TYPE | CHAR(1) | routine_type - ルーチン・タイプのモニター・エレメント |
ROUTINE_SCHEMA | VARCHAR(128) | routine_schema - ルーチン・スキーマのモニター・エレメント |
ROUTINE_MODULE_NAME | VARCHAR(128) | routine_module_name - ルーチン・モジュール名のモニター・エレメント |
ROUTINE_NAME | VARCHAR(128) | routine_name - ルーチン名 : モニター・エレメント |
SPECIFIC_NAME | VARCHAR(128) | specific_name - 特定名のモニター・エレメント |
ROUTINE_ID | INTEGER | routine_id - ルーチン ID : モニター・エレメント |
SUBROUTINE_ID | INTEGER | subroutine_id - サブルーチン ID のモニター・エレメント |
LIB_ID | BIGINT | lib_id - ライブラリー ID のモニター・エレメント |
使用上の注意
入力セクションは、パッケージ・キャッシュ内になければなりません。
この関数によって返されるオブジェクトは、必ずしも入力セクションの実行時に呼び出されるとは限りません。 例えば、次の SELECT ステートメントで、ステートメント FUNCTION1 はコンパイル済み関数です。
SELECT CASE WHEN COL1 = 0 THEN FUNCTION1() ELSE NULL END AS T1 FROM TABLE1
MON_GET_SECTION_ROUTINE 表関数は、引数として渡された executable_id
がこのステートメントのセクションを識別している場合に、FUNCTION1 関数の行を返します。 しかし、このステートメントの実行時に FUNCTION1 が呼び出されるのは、TABLE1 のいずれかの行で COL1 の値が 0 になっている場合のみです。例
- 実行可能 ID x'0100000000000000520100000000000001000000010020120822205618607103' を持つパッケージ・キャッシュ内のセクションによって実行される可能性のあるすべてのルーチンをリストします。
戻り値SELECT * FROM TABLE(MON_GET_SECTION_ROUTINE( x'0100000000000000520100000000000001000000010020120822205618607103')) AS T
ROUTINE_TYPE ROUTINE_SCHEMA ROUTINE_MODULE_NAME ROUTINE_NAME ... ------------ --------------- ------------------- ------------ ... F SPEEDY TANKS ANALYZE_LOG1 ... P SPEEDY TANKS POST_PROCESS ... 2 record(s) selected.
- 実行可能 ID x'0100000000000000520100000000000001000000010020120822205618607103' を持つ INSERT ステートメントが長時間に渡って実行されていることにユーザーが気付きます。 次のステートメントを実行して、その INSERT の実行中にコンパイル済みトリガーが呼び出されたかどうかを確認します。
戻り値SELECT * FROM TABLE(MON_GET_SECTION_ROUTINE( x'0100000000000000520100000000000001000000010020120822205618607103')) AS T WHERE ROUTINETYPE = 'T'
ROUTINE_TYPE ROUTINE_SCHEMA ROUTINE_MODULE_NAME ROUTINE_NAME ... ------------ -------------- ------------------- ------------------ ... T MIKE INVALID_WELD_VALUE ... P MIKE INSERT_WELD_SPECS ... 2 record(s) selected.
- 実行可能 ID x'0100000000000000520100000000000001000000010020120822205618607103' を持つ無名ブロックについて内部スキーマとプロシージャー名を調べます。
戻り値SELECT ROUTINESCHEMA, ROUTINENAME, SPECIFICNAME FROM TABLE(MON_GET_SECTION_ROUTINE( x'0100000000000000520100000000000001000000010020120822205618607103')) AS T
ROUTINE_SCHEMA ROUTINE_NAME SPECIFIC_NAME ... --------------- ------------------ ------------------ ... GSOSCHEMA PING_RUBBLE SQL120801135351900 ... 1 record(s) selected.