COMPILATION_ENV 表関数 - コンパイル環境のエレメントの検索

COMPILATION_ENV 表関数は、コンパイル環境のエレメントを戻します。

構文

構文図を読む構文図をスキップするCOMPILATION_ENV(compilation-env )

スキーマは SYSPROC です。

表関数パラメーター

compilation-env
comp_env_desc (コンパイル環境) モニター・エレメントから得られる、コンパイル環境が入った、タイプ BLOB(2M) の入力引数。

許可

この関数を実行するには、以下のいずれかの権限が必要です。
  • 関数に対する EXECUTE 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限

デフォルトの PUBLIC 特権

制限のないデータベースでは、この関数が自動的に作成されると、EXECUTE 特権が PUBLIC に付与されます。

関数は、NAME VARCHAR(256) および VALUE VARCHAR(1024) という 2 つの列 (表 1を参照) がある表を戻します。 コンパイル環境のエレメント名として可能な値を、表 2で説明します。

エレメント値の提供元は主に、SQL ステートメントが動的に発行されるか、またはパッケージの一部としてバインドされるかに応じて異なります。

コンパイル環境の項目の数とタイプは、データベース・マネージャーの機能の追加に応じ、時の経過と共に変わる可能性があります。コンパイル環境が、この関数が実行されているのとは異なるデータベース・マネージャー・レベルのものである場合、そのレベルの関数によって認識されるエレメントだけが戻されます。エレメントの記述は、リリースごとに異なる場合もあります。

例 1: デッドロック・イベント・モニターによって以前にキャプチャーされた特定のコンパイル環境のすべてのエレメントを要求します。 WITH DETAILS HISTORY オプションを指定して作成されたデッドロック・イベント・モニターは、動的 SQL ステートメントのコンパイル環境をキャプチャーします。 このキャプチャー環境は、表関数への入力として受け入れられるものです。

   SELECT NAME, VALUE
     FROM TABLE(SYSPROC.COMPILATION_ENV(:hv1)) AS t
例 2: コンパイル環境の特定のエレメント (デフォルトのスキーマ) を要求します。
   SELECT NAME, VALUE
     FROM TABLE(SYSPROC.COMPILATION_ENV(:hv1)) AS t
     WHERE NAME = 'SCHEMA'
例 3: パッケージ・キャッシュ内の特定のステートメントのコンパイル環境を表示します。
  1. 実行可能 ID を取得します。これは、以下のステートメントを使って、対象のステートメントを識別するために使用されます。
    SELECT EXECUTABLE_ID, VARCHAR(STMT_TEXT, 100)
      FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-1)) AS t
    以下は、上記ステートメントを実行した後の出力例です。
    EXECUTABLE_ID                                                       2
    ------------------------------------------------------------------- --------------------------------------------------
    x'0100000000000000010000000000000000000000020020090914151405241700' select count(*) from syscat.tables                
    ...
  2. ステートメント (実行可能 ID を使って識別される) のコンパイル環境を調べ、COMPILATION_ENV 表関数を使ってコンパイル環境をフォーマットします。以下のステートメントは、これを行う方法を示す例です。
    SELECT VARCHAR(NAME, 30), VARCHAR(VALUE, 50)
      FROM TABLE(COMPILATION_ENV((SELECT COMP_ENV_DESC FROM TABLE
        (MON_GET_PKG_CACHE_STMT(NULL, 
         x'0100000000000000010000000000000000000000020020090914151405241700', 
         NULL, -1)) AS t))) AS s
    以下は、上記ステートメントを実行した後の出力例です。
    1                              2                                                 
    ------------------------------ --------------------------------------------------
    ISOLATION                      CS                                                
    QUERY_OPTIMIZATION             5                                                                                                
    DEGREE                         1                                                 
    SQLRULES                       Db2                                               
    REFRESH_AGE                    +00000000000000.000000                            
    RESOLUTION_TIMESTAMP           2009-09-14-15.14.05.000000                        
    FEDERATED_ASYNCHRONY           0                                                 
    PATH                           "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","SWALKTY" 
    MAINTAINED_TABLE_TYPE          SYSTEM                                            
    
      9 record(s) selected.

戻される情報

表 1. COMPILATION 表関数によって戻される情報
列名 データ・タイプ 説明
NAME VARCHAR(256) コンパイル環境のエレメント。詳しくは、表 2を参照してください。
VALUE VARCHAR(1024) エレメントの値。
表 2. COMPILATION_ENV 表関数によって戻されるコンパイル環境のエレメント
エレメント名 説明
ISOLATION SQL コンパイラーに渡される分離レベル。この値は、現行のパッケージの CURRENT ISOLATION 特殊レジスターまたは ISOLATION BIND オプションから取得されます。
QUERY_OPTIMIZATION SQL コンパイラーに渡される照会最適化レベル。この値は、現行のパッケージの CURRENT QUERY OPTIMIZATION 特殊レジスターまたは QUERYOPT BIND オプションから取得されます。
DEGREE SQL コンパイラーに渡される、要求された内部並列処理の度合い。この値は、現行のパッケージの CURRENT DEGREE 特殊レジスターまたは DEGREE BIND オプションから取得されます。
SQLRULES SQL コンパイラーに渡される、要求された SQL ステートメントの動作。この値は、現行のパッケージの LANGLVL BIND オプションの設定から導出されます。可能な値は、'Db2' または 'SQL92' です。
REFRESH_AGE SQL コンパイラーに渡される、許容データ待ち時間。この値は、現行のパッケージの CURRENT REFRESH AGE 特殊レジスターまたは REFRESHAGE BIND オプションから取得されます。
SCHEMA SQL コンパイラーに渡されるデフォルトのスキーマ。この値は、現行のパッケージの CURRENT SCHEMA 特殊レジスターまたは QUALIFIER BIND オプションから取得されます。
PATH SQL コンパイラーに渡される関数パス。この値は、現行のパッケージの CURRENT PATH 特殊レジスターまたは FUNC_PATH BIND オプションから取得されます。
TRANSFORM_GROUP SQL コンパイラーに渡されるトランスフォーム・グループ情報。この値は、CURRENT DEFAULT TRANSFORM GROUP 特殊レジスターまたは TRANSFORMGROUP パッケージ BIND オプションから取得されます。
MAINTAINED_TABLE_TYPE SQL コンパイラーに渡される、どの表タイプを最適化の検討対象にできるかを示すインディケーター。この値は、CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 特殊レジスターから取得されます。
RESOLUTION_TIMESTAMP SQL ステートメント内の関数やデータ・タイプ参照などの項目の解決のために、SQL コンパイラーによって使用されるタイム・スタンプ。このタイム・スタンプは、現行のタイム・スタンプか、または現行のパッケージの最新の明示的なバインド操作のタイム・スタンプです。
FEDERATED_ASYNCHRONY SQL コンパイラーに渡される、要求されたフェデレーテッド非同期並列処理の度合い。この値は、現行のパッケージの CURRENT FEDERATED ASYNCHRONY 特殊レジスターまたは FEDERATED_ASYNCHRONY BIND オプションから取得されます。