EXPLAIN_FROM_CATALOG プロシージャー - カタログからのセクション情報を使用したステートメントの Explain

EXPLAIN_FROM_CATALOG プロシージャーは、カタログから得られるセクションの内容を使用してステートメントを Explain します。

Explain の出力は Explain 表に格納され、任意の既存の Explain ツール (例えば db2exfmt) を使ってこれを処理できます。

許可

このルーチンを実行するには、以下のいずれかの権限または特権が必要です。
  • ルーチンに対する EXECUTE 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限
  • EXPLAIN 権限
さらに、グループに付与された特権を含め、セッションの許可 ID によって保持されている特権には、少なくとも以下のいずれかが含まれていなければなりません。
  • 指定されたスキーマ内の Explain 表に対する INSERT 特権
  • 指定されたスキーマ内の Explain 表に対する CONTROL 特権
  • DATAACCESS 権限

デフォルトの PUBLIC 特権

なし

構文

Read syntax diagramSkip visual syntax diagramEXPLAIN_FROM_CATALOG(pkgschema,pkgname ,pkgversion,sectno ,explain_schema ,explain_requester,explain_time ,source_name,source_schema ,source_version)

スキーマは SYSPROC です。

プロシージャー・パラメーター

PKGSCHEMA
Explain されるセクションを含むパッケージのスキーマを指定する、タイプ VARCHAR(128) の入力引数。 pkgschema が NULL または空ストリングの場合、SQL2032N が戻されます。
pkgname
Explain されるセクションを含むパッケージを指定する、タイプ VARCHAR(128) の入力引数。 pkgname が NULL または空ストリングの場合、SQL2032N が戻されます。
PKGVERSION
Explain されるセクションを含むパッケージのバージョン ID を指定する、タイプ VARCHAR(64) の入力引数。 パッケージにバージョンがない場合は、空ストリングを指定します (VARCHAR2 互換モードが有効になっている場合はブランク ' ' 文字)。 pkgversion が NULL である場合、SQL2032N が戻されます。
sectno
Explain されるセクションを指定する、タイプ SMALLINT の入力引数。 sectno が NULL である場合、SQL2032N が戻されます。
スキーマの説明
タイプ VARCHAR(128) のオプションの入力または出力引数。Explain 情報が書き込まれる Explain 表を含むスキーマを指定します。 空ストリングまたは NULL を指定した場合、セッション許可 ID のもとで Explain 表が検索され、その後、SYSTOOLS スキーマで検索されます。 Explain 表が見つからない場合、SQL0219N が戻されます。 呼び出し元が Explain 表に対する INSERT 特権を持っていない場合、SQL0551N が戻されます。 出力の場合、このパラメーターは、情報が書き込まれた Explain 表を含んでいるスキーマに設定されます。
EXPLAIN_REQUESTER
タイプ VARCHAR(128) の出力引数。このルーチンが呼び出された接続のセッション許可 ID が格納されます。
EXPLAIN_TIME
Explain 要求の開始時刻を格納する、タイプ TIMESTAMP の出力引数。
source_name
タイプ VARCHAR (128) の出力引数。ステートメントの準備時またはコンパイル時に実行されていたパッケージの名前を格納します。
SOURCE_SCHEMA
ソース Explain 要求のスキーマまたは修飾子を格納する、タイプ VARCHAR(128) の出力引数。
SOURCE_VERSION
Explain 要求のソースのバージョンを格納する、タイプ VARCHAR(64) の出力引数。

使用上の注意

入力パラメーターに一致するセクションが見つからない場合は SQL20501 が戻されます。

出力パラメーター explain_requesterexplain_timesource_namesource_schemasource_version はキーを構成し、これを使って Explain 表内のセクションに関する Explain 情報を検索します。 これらのパラメーターをいずれかの既存の Explain ツール (例えば db2exfmt) で使用して、セクションから取得される Explain 情報をフォーマットします。

このプロシージャーは、Explain 表への挿入後に COMMIT ステートメントを発行しません。 プロシージャーの呼び出し元が COMMIT を発行する必要があります。

以下の例は、コンパイル済みでカタログ内に存在する静的ステートメントを Explain する方法を示しています。 まず、例えば次のようにして SYSCAT.STATEMENTS カタログ・ビューから選択することにより、セクションを識別できます。
SELECT pkgschema,
       pkgname,
       version,
       Sectno
FROM SYSCAT.STATEMENTS
WHERE TEXT = 'select count(*) from syscat.tables'
この照会により、以下の例のような出力が戻されます。
PKGSCHEMA  PKGNAME              VERSION               SECTNO 
---------- -------------------- --------------------- ------ 
NULLID     SQLE2G0S                                   1 
NULLID     SQLE2G0S             VERSION1              1 

     2 record(s) selected.
次に、pkgschemapkgnameversion および sectno の識別情報を EXPLAIN_FROM_CATALOG プロシージャーに渡します。次に例を示します。
CALL EXPLAIN_FROM_CATALOG( 'NULLID', 'SQLE2G0S', '', 1, 'MYSCHEMA', ?, ?, ?, ?, ? )