GET DIAGNOSTICS

GET DIAGNOSTICS ステートメントは、直前に実行された SQL ステートメントに関する情報を取得します。

呼び出し

このステートメントは、アプリケーション・プログラム、SQL 関数、 SQL プロシージャー、またはトリガー内にのみ組み込むことができます。 これを対話式に発行することはできません。これは実行可能ステートメントですが、動的に準備することはできません。REXX で指定してはなりません。

権限

権限は不要です。

構文

構文図を読む構文図をスキップする
        .-CURRENT-.                                           
>>-GET--+---------+--DIAGNOSTICS--+-statement-information-+----><
        '-STACKED-'               +-condition-information-+   
                                  '-combined-information--'   

statement-information

     .-,-------------------------------------------.      
     V                                             |      
|--+---variable-1-- = --statement-information-item-+--+---------|
   '-variable-1-- = --DB2_GET_DIAGNOSTICS_DIAGNOSTICS-'   

condition-information

|--CONDITION--+-variable-2-+------------------------------------>
              '-integer----'   

   .-,------------------------------------------------.   
   V                                                  |   
>----variable-3-- = --+-connection-information-item-+-+---------|
                      '-condition-information-item--'     

combined-information

|--variable-4-- = ---------------------------------------------->

                                                   (1)   
>--ALL--+----------------------------------------+--------------|
        | .-,----------------------------------. |       
        | V                                    | |       
        '---+-STATEMENT----------------------+-+-'       
            '-+-CONDITION--+--+------------+-'           
              '-CONNECTION-'  +-variable-5-+             
                              '-integer----'             

注:
  1. STATEMENT は 1 回だけ指定できます。 変数-5 または整数 が指定されていない場合、 CONDITION および CONNECTION は 1 回だけ指定できます。
構文図を読む構文図をスキップする
statement-information-item

|--+-COMMAND_FUNCTION----------------+--------------------------|
   +-COMMAND_FUNCTION_CODE-----------+   
   +-DB2_DIAGNOSTIC_CONVERSION_ERROR-+   
   +-DB2_LAST_ROW--------------------+   
   +-DB2_NUMBER_CONNECTIONS----------+   
   +-DB2_NUMBER_PARAMETER_MARKERS----+   
   +-DB2_NUMBER_RESULT_SETS----------+   
   +-DB2_NUMBER_ROWS-----------------+   
   +-DB2_NUMBER_SUCCESSFUL_SUBSTMTS--+   
   +-DB2_RELATIVE_COST_ESTIMATE------+   
   +-DB2_RETURN_STATUS---------------+   
   +-DB2_ROW_COUNT_SECONDARY---------+   
   +-DB2_ROW_LENGTH------------------+   
   +-DB2_SQL_ATTR_CONCURRENCY--------+   
   +-DB2_SQL_ATTR_CURSOR_CAPABILITY--+   
   +-DB2_SQL_ATTR_CURSOR_HOLD--------+   
   +-DB2_SQL_ATTR_CURSOR_ROWSET------+   
   +-DB2_SQL_ATTR_CURSOR_SCROLLABLE--+   
   +-DB2_SQL_ATTR_CURSOR_SENSITIVITY-+   
   +-DB2_SQL_ATTR_CURSOR_TYPE--------+   
   +-DB2_SQL_NESTING_LEVEL-----------+   
   +-DYNAMIC_FUNCTION----------------+   
   +-DYNAMIC_FUNCTION_CODE-----------+   
   +-MORE----------------------------+   
   +-NUMBER--------------------------+   
   +-ROW_COUNT-----------------------+   
   +-TRANSACTION_ACTIVE--------------+   
   +-TRANSACTIONS_COMMITTED----------+   
   '-TRANSACTIONS_ROLLED_BACK--------'   

connection-information-item

|--+-CONNECTION_NAME---------+----------------------------------|
   +-DB2_AUTHENTICATION_TYPE-+   
   +-DB2_AUTHORIZATION_ID----+   
   +-DB2_CONNECTION_METHOD---+   
   +-DB2_CONNECTION_NUMBER---+   
   +-DB2_CONNECTION_STATE----+   
   +-DB2_CONNECTION_STATUS---+   
   +-DB2_CONNECTION_TYPE-----+   
   +-DB2_DYN_QUERY_MGMT -----+   
   +-DB2_ENCRYPTION_TYPE-----+   
   +-DB2_PRODUCT_ID----------+   
   +-DB2_SERVER_CLASS_NAME---+   
   '-DB2_SERVER_NAME---------'   

構文図を読む構文図をスキップする
condition-information-item

|--+-CATALOG_NAME------------------+----------------------------|
   +-CLASS_ORIGIN------------------+   
   +-COLUMN_NAME-------------------+   
   +-CONDITION_IDENTIFIER----------+   
   +-CONDITION_NUMBER--------------+   
   +-CONSTRAINT_CATALOG------------+   
   +-CONSTRAINT_NAME---------------+   
   +-CONSTRAINT_SCHEMA-------------+   
   +-CURSOR_NAME-------------------+   
   +-DB2_ERROR_CODE1---------------+   
   +-DB2_ERROR_CODE2---------------+   
   +-DB2_ERROR_CODE3---------------+   
   +-DB2_ERROR_CODE4---------------+   
   +-DB2_INTERNAL_ERROR_POINTER----+   
   +-DB2_LINE_NUMBER---------------+   
   +-DB2_MESSAGE_ID----------------+   
   +-DB2_MESSAGE_ID1---------------+   
   +-DB2_MESSAGE_ID2---------------+   
   +-DB2_MESSAGE_KEY---------------+   
   +-DB2_MODULE_DETECTING_ERROR----+   
   +-DB2_NUMBER_FAILING_STATEMENTS-+   
   +-DB2_OFFSET--------------------+   
   +-DB2_ORDINAL_TOKEN_n-----------+   
   +-DB2_PARTITION_NUMBER----------+   
   +-DB2_REASON_CODE---------------+   
   +-DB2_RETURNED_SQLCODE----------+   
   +-DB2_ROW_NUMBER----------------+   
   +-DB2_SQLERRD_SET---------------+   
   +-DB2_SQLERRD1------------------+   
   +-DB2_SQLERRD2------------------+   
   +-DB2_SQLERRD3------------------+   
   +-DB2_SQLERRD4------------------+   
   +-DB2_SQLERRD5------------------+   
   +-DB2_SQLERRD6------------------+   
   +-DB2_TOKEN_COUNT---------------+   
   +-DB2_TOKEN_STRING--------------+   
   +-MESSAGE_LENGTH----------------+   
   +-MESSAGE_OCTET_LENGTH----------+   
   +-MESSAGE_TEXT------------------+   
   +-PARAMETER_MODE----------------+   
   +-PARAMETER_NAME----------------+   
   +-PARAMETER_ORDINAL_POSITION----+   
   +-RETURNED_SQLSTATE-------------+   
   +-ROUTINE_CATALOG---------------+   
   +-ROUTINE_NAME------------------+   
   +-ROUTINE_SCHEMA----------------+   
   +-SCHEMA_NAME-------------------+   
   +-SERVER_NAME-------------------+   
   +-SPECIFIC_NAME-----------------+   
   +-SUBCLASS_ORIGIN---------------+   
   +-TABLE_NAME--------------------+   
   +-TRIGGER_CATALOG---------------+   
   +-TRIGGER_NAME------------------+   
   '-TRIGGER_SCHEMA----------------'   

説明

CURRENT または STACKED
アクセスする診断領域を指定します。
CURRENT
最初の診断領域にアクセスするように指定します。 これは、直前に実行された SQL ステートメントで、GET DIAGNOSTICS ステートメントでないものに対応します。これはデフォルトです。
STACKED
2 番目の診断領域にアクセスするように指定します。 2 番目の診断領域は、ハンドラー内だけで使用できます。 これはハンドラーに入る前に実行された直前の SQL ステートメントで、 GET DIAGNOSTICS ではないものに対応します。 GET DIAGNOSTICS ステートメントがハンドラー内で最初のステートメントである場合、 最初の診断領域と 2 番目の診断領域には同じ診断情報が含まれます。
statement-information
最後に実行された SQL ステートメントに関する情報を戻します。
variable-1
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。 変数をグローバル変数にすることはできません。変数のデータ・タイプは、表 1 で指定の条件情報項目として指定されているデータ・タイプと互換性がなければなりません。変数には、検索割り当てで説明されている検索割り当て規則に従って、指定したステートメント情報項目の値が割り当てられます。その値が変数に割り当てられる際に切り捨てられる場合、 警告 (SQLSTATE 01004) が戻されて診断領域の GET_DIAGNOSTICS_DIAGNOSTICS 項目に この条件の詳細が追加されて更新されます。

指定の診断項目に診断情報が含まれない場合、 変数はそのデータ・タイプに基づいてデフォルト値に設定されます。

  • 厳密な数の値診断項目は 0、
  • VARCHAR 診断項目は空ストリング、
  • および CHAR 診断項目はブランクです。
condition-information
最後の SQL ステートメントの実行時に生じた 1 つ以上の条件に関する情報を戻します。
CONDITION variable-2 または integer
情報が要求された診断を識別します。 SQL ステートメントを実行する際に生じる診断ごとに、1 つの整数が割り当てられます。 値 1 は最初の診断を示し、2 は 2 番目の診断を示し、以下同様となります。 値が 1 の場合、検索される診断情報は (GET DIAGNOSTICS ステートメント以外の) 直前の SQL ステートメントの 実行によって実際に戻された SQLSTATE 値によって示される条件に対応します。 指定される変数は、位取りがゼロの真数変数の宣言規則に従ってプログラム内で宣言される必要があり、グローバル変数であってはなりません。 指定される値は、1 より小さくてはならず、使用可能な診断の数よりも大きくてもなりません。
variable-3
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。 変数をグローバル変数にすることはできません。変数のデータ・タイプは、表 1 で指定の条件情報項目として指定されているデータ・タイプと互換性がなければなりません。変数には、検索割り当てで説明されている検索割り当て規則に従って、指定した条件情報項目の値が割り当てられます。その値が変数に割り当てられる際に切り捨てられる場合、 エラーが戻されて診断領域の GET_DIAGNOSTICS_DIAGNOSTICS 項目に この条件の詳細が追加されて更新されます。

指定の診断項目に診断情報が含まれない場合、 変数はそのデータ・タイプに基づいてデフォルト値に設定されます。

  • 厳密な数の値診断項目は 0、
  • VARCHAR 診断項目は空ストリング、
  • および CHAR 診断項目はブランクです。
combined-information
1 つのストリングに結合された複数の情報を戻します。
variable-4
変数を宣言する規則に従ってプログラム内で宣言された、変数を指定します。 変数をグローバル変数にすることはできません。変数のデータ・タイプは、VARCHAR でなければなりません。 変数は、検索割り当てで説明されている検索割り当て規則に従って割り当てられます。variable-4 の長さが、戻される診断ストリング全体を保持するのに十分な長さでない場合、ストリングは切り捨てられ、エラーが戻されて診断領域の GET_DIAGNOSTICS_DIAGNOSTICS 項目にこの条件の詳細が追加されて更新されます。
ALL
最後に実行された SQL ステートメントに設定されたすべての診断項目を、 1 つのストリングに結合するように指示します。 ストリングの形式は、 以下の形式による、使用可能なすべての診断情報を含むセミコロンで分離したリストです。
項目名=文字形式による項目値;
文字形式による正の数値には、先頭の正符号 (+) は含まれません。 ただし、項目が DB2_RETURNED_SQLCODE のときは例外です。 その場合には、先頭に正符号 (+) が追加されます。 例えば、次のようになります。
 NUMBER=1;RETURNED_SQLSTATE=02000;DB2_RETURNED_SQLCODE=+100;
診断情報を含む項目だけが、ストリングに含まれます。 このストリング内には、DB2_GET_DIAGNOSTICS_DIAGNOSTICS および DB2_SQL_NESTING_LEVEL 項目についてのエントリーもありません。
STATEMENT
最後に実行された SQL ステートメントの診断項目を含む すべてのステートメント情報項目 診断項目を、 1 つのストリングに結合するように指示します。 形式は、ALL についての上記の説明と同じです。
CONDITION
最後に実行された SQL ステートメントの診断情報を含む条件情報項目 診断項目を、1 つのストリングに結合するように指示します。variable-5 または integer を指定した場合、その形式は ALL オプションについての上記の説明と同じになります。variable-5 または integer を指定しない場合、その形式には情報の先頭に、以下の形式による条件に対する条件番号項目が含まれます。
CONDITION_NUMBER=X;item-name=character-form-of-the-item-value;
X は、条件の番号です。 例えば、次のようになります。
CONDITION_NUMBER=1;RETURNED_SQLSTATE=02000;DB2_RETURNED_SQLCODE=+100;
CONDITION_NUMBER=2;RETURNED_SQLSTATE=01004;
CONNECTION
最後に実行された SQL ステートメントの診断項目を含む 接続情報項目 診断項目を、1 つのストリングに結合するように指示します。 variable-5 または integer を指定した場合、その形式は ALL についての上記の説明と同じになります。variable-5 または integer を指定しない場合、その形式には情報の先頭に、以下の形式による条件に対する接続番号項目が含まれます。
DB2_CONNECTION_NUMBER=X;item-name=character-form-of-the-item-value;
X は、条件の番号です。 例えば、次のようになります。
DB2_CONNECTION_NUMBER=1;CONNECTION_NAME=SVL1;DB2_PRODUCT_ID=DSN07010;
variable-5 または integer
ALL CONDITION または ALL CONNECTION 情報が要求された診断を識別します。 指定された変数は、変数の宣言の規則に従ってプログラムで宣言されていなければなりません。変数をグローバル変数にすることはできません。指定される値は、1 より小さくてはならず、使用可能な診断の数よりも大きくてもなりません。

ステートメント情報項目

COMMAND_FUNCTION
直前の SQL ステートメントの名前を戻します。 ステートメント・ストリング値についての詳細は、 表 2 を参照してください。
COMMAND_FUNCTION_CODE
直前の SQL ステートメントを識別する整数を戻します。 ステートメント・コード値についての詳細は、 表 2 を参照してください。
DB2_DIAGNOSTIC_CONVERSION_ERROR
GET DIAGNOSTICS ステートメント値の 1 つのために文字データ値を変換するとき 変換エラーが生じた場合、値の 1 を戻します。 その他の場合は、値 0 を戻します。
DB2_GET_DIAGNOSTICS_DIAGNOSTICS
GET DIAGNOSTICS ステートメントの後に、GET DIAGNOSTICS ステートメントの実行中に エラーまたは警告が生じた場合、DB2_GET_DIAGNOSTICS_DIAGNOSTICS はそれらのエラーまたは警告に 関するテキスト情報を戻します。 この情報の形式は、GET DIAGNOSTICS :hv = ALL ステートメントで戻される形式に似ています。

サーバーの DRDA® レベルが要求元のクライアントよりも低い場合など、 サーバーが理解できない情報項目についての要求が出された場合は、 DB2_GET_DIAGNOSTICS_DIAGNOSTICS はテキスト 'Item not supported:' に続けて、 要求されてはいてもサーバーがサポートしていない項目名のコンマで区切られたリストを戻します。

DB2_LAST_ROW
multiple-row-fetch ステートメント の場合、取り出された行のセットに、結果表に現在ある最後の行 (順方向に取り出しているカーソルの場合) が 含まれているか、結果表に現在ある最初の行 (逆方向に取り出しているカーソルの場合) が 含まれていると、値 +100 が戻されることがあります。戻された行の数が要求した行の数に等しい場合は、 データ終わりの警告は発生しないことがあり、DB2_LAST_ROW は +100 に設定されないことがあります。

更新に影響を受けにくいカーソルの場合に DB2_LAST_ROW の値 +100 が戻されると、 以降の FETCH は、SQLCODE が +100 に、SQLSTATE が「02000」に設定されて戻ります。 更新に影響を受けやすいカーソルの場合は、以降の FETCH は、 FETCH が実行される前に挿入された行があれば、 より多くのデータを戻すことがあります。

multiple-row-fetch ステートメント 以外のステートメントの場合、または、結果表に現在ある最後の行 (順方向に取り出しているカーソルの場合) を含んでいないか、 結果表に現在ある最初の行 (逆方向に取り出しているカーソルの場合) を含んで いない multiple-row-fetch ステートメントの場合、または、サーバーが SQLCA のみを戻す場合、 ゼロ値が戻されます。

DB2_NUMBER_CONNECTIONS
クライアントの要求を実行するサーバーを取得するために確立された接続の数を戻します。 それぞれの接続は、単一の条件に対して入手可能となる接続情報の項目領域を生成することがあります。
DB2_NUMBER_PARAMETER_MARKERS
PREPARE ステートメントの場合、 準備済みステートメント内のパラメーター・マーカーの数を戻します。 その他の場合は、値 0 を戻します。
DB2_NUMBER_RESULT_SETS
CALL ステートメントの場合は、プロシージャーから戻された結果セットの実際の数を戻します。 その他の場合は、値 0 を戻します。
DB2_NUMBER_ROWS
直前の SQL ステートメントが OPEN または FETCH であり、 それによって結果表のサイズが判明した場合、結果表の行数を戻します。 SENSITIVE カーソルでは、挿入および削除される行はこの値の次回の検索に影響を与えるので、 この値は近似とみなされます。 その他の場合は、値 0 を戻します。
DB2_NUMBER_SUCCESSFUL_SUBSTMTS
組み込み複合 SQL ステートメントでは、成功したサブステートメントの数を戻します。 その他の場合は、値 0 を戻します。
DB2_RELATIVE_COST_ESTIMATE
PREPARE ステートメントの場合は、 すべての実行で必要なリソースの相対的なコストの見積もりを戻します。 必要な時間の見積もりは反映されません。 動的に定義されるステートメントを準備するとき、 この値は準備するステートメントの相対コストの標識として使用できます。 この値は統計の変更に応じてさまざまであり、 製品のリリースごとに異なることがあります。 これはオプティマイザーによって選択されたアクセス・プランの見積もりコストです。 ステートメントが PREPARE ステートメントではない場合、値のゼロが戻されます。
DB2_RETURN_STATUS
直前の SQL CALL ステートメントから戻された状況値を識別します。 直前のステートメントが CALL ステートメントでない場合は、戻される値は意味がなく、予測不能です。 詳しくは、戻り (RETURN) ステートメントを参照してください。 その他の場合は、値 0 を戻します。

外部プロシージャーについては、SQLCODE < 0 が戻された場合は、SQL_ERROR_CODE1 および DB2_RETURN_STATUS は -1 に設定され、それ以外の場合は、SQL_ERROR_CODE1 および DB2_RETURN_STATUS は 0 に設定されます。

DB2_ROW_COUNT_SECONDARY
直前に実行された SQL ステートメントの 2 次アクションに関連付けられた行数を識別します。 直前の SQL ステートメントが DELETE または MERGE の場合、この値はカスケードされたアクションを含む参照制約、および活動化されたトリガーからのトリガー SQL ステートメントの処理の影響を受ける合計行数です。直前の SQL ステートメントが INSERT または UPDATE の場合、この値は、活動化されたトリガーからのトリガー SQL ステートメントの処理の結果として影響を受ける合計行数です。 その他の場合は、値 0 を戻します。

分離レベルのコミット不可を使用して SQL ステートメントが実行される場合、この値はゼロになる場合があります。

DB2_ROW_LENGTH
FETCH ステートメントの場合は、取り出された行の長さを戻します。 その他の場合は、値 0 を戻します。
DB2_SQL_ATTR_CONCURRENCY
OPEN ステートメントの場合、読み取り専用、ロッキング、楽観的使用のタイム・スタンプ、 または楽観的使用の値についての、並行性制御オプションを示します。
  • R は、読み取り専用を示します。
  • L は、ロッキングを示します。
  • T は、タイム・スタンプまたは ROWID を使用して行バージョンを比較することを示します。
  • V は、値を比較することを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_CAPABILITY
OPEN ステートメントの場合、 カーソルが読み取り専用、削除可能、または更新可能であるかどうかという、カーソルの機能を示します。
  • R は、カーソルが読み取り専用であることを示します。
  • D は、カーソルを使用して読み取りおよび削除できることを示します。
  • U は、カーソルを使用して読み取り、削除、および更新ができることを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_HOLD
OPEN ステートメントの場合、カーソルを複数の作業単位に渡って オープンしたままにできるかどうかを示します。
  • N は、このカーソルが複数の作業単位に渡ってオープンしたままにはならないことを示します。
  • Y は、このカーソルが複数の作業単位に渡ってオープンしたままになることを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_ROWSET
OPEN ステートメントの場合、行セットによる位置指定を使用して カーソルにアクセスできるかどうかを示します。
  • N は、このカーソルが行で位置指定する操作だけをサポートすることを示します。
  • Y は、このカーソルが行セットによる位置指定をサポートすることを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_SCROLLABLE
OPEN ステートメントの場合、カーソルを前方および後方にスクロールできるかどうかを示します。
  • N は、このカーソルがスクロール可能ではないことを示します。
  • Y は、このカーソルがスクロール可能であることを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_SENSITIVITY
OPEN ステートメントの場合、カーソルが他の接続によるカーソル行の更新を表示するかどうかを示します。
  • I は、反応しないことを示します。
  • P は、部分的に反応することを示します。
  • S は、反応することを示します。
  • U は、指定されていないことを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_ATTR_CURSOR_TYPE
OPEN ステートメントの場合、 カーソル・タイプが動的、転送のみ、または静的であるかどうかを示します。
  • D は、動的カーソルを示します。
  • F は、前進のみのカーソルを示します。
  • S は、静的カーソルを示します。
その他の場合は、ブランクを戻します。
DB2_SQL_NESTING_LEVEL
GET DIAGNOSTICS ステートメントが実行されたときに有効になっていたネストまたは再帰の現行レベルを識別します。 各ネスト・レベルは、関数、プロシージャー、またはトリガーのネスト呼び出しまたは再帰的呼び出しに対応しています。GET DIAGNOSTICS ステートメントがネストのレベル外で実行される場合、値ゼロが戻されます。

並行して実行しているユーザー定義関数内で GET DIAGNOSTICS が 発行される場合、ネスト・レベルは予測不能です。

DYNAMIC_FUNCTION
動的に準備または実行される SQL ステートメントのタイプを示す、文字ストリングを戻します。 ステートメント・ストリング値についての詳細は、 表 2 を参照してください。
DYNAMIC_FUNCTION_CODE
動的に準備または実行される SQL ステートメントのタイプを示す、数値を戻します。 ステートメント・コード値についての詳細は、 表 2 を参照してください。
MORE
処理可能な数よりも多くのエラーが発生したかどうかを示します。
  • N は、直前の SQL ステートメントによるすべてのエラーと警告が、診断領域に保管されたことを示します。
  • Y は、直前の SQL ステートメントによって発生したエラーと警告の数が、 診断領域内の条件領域の数よりも多いことを示します。 診断領域の最大サイズは 90K です。
NUMBER
直前の GET DIAGNOSTICS ステートメント以外の SQL ステートメントの実行によって検出された、 診断領域に保管されたエラーと警告の数を戻します。 直前の SQL ステートメントが成功 (SQLSTATE 00000) を戻したか、 または実行された直前の SQL ステートメントが存在しない場合、戻される数値は 1 となります。 GET DIAGNOSTICS ステートメントそのものは SQLSTATE パラメーターを介して情報を戻すことがありますが、 DB2_GET_DIAGNOSTICS_DIAGNOSTICS 項目を除いて、診断領域の以前の内容を変更することはありません。
ROW_COUNT
直前に実行された SQL ステートメントに関連付けられた行数を識別します。 直前の SQL ステートメントが DELETE、INSERT、REFRESH、または UPDATE ステートメント の場合、ROW_COUNT は、そのステートメントによって削除、挿入、または 更新された行数を識別します (ただし、トリガーまたは参照保全制約の影 響を受けている行は除きます)。 直前の SQL ステートメントが MERGE ステートメントの場合、ROW_COUNT は、そのステートメントによって削除、挿入、および更新された合計行数を識別します (ただし、トリガーまたは参照保全制約の影響を受けている行は除きます)。直前の SQL ステートメントが複数行の 複数行取り出し、ROW_COUNT は取り出される行数を示します。 その他の場合は、値 0 を戻します。
TRANSACTION_ACTIVE
SQL トランザクションが現在アクティブであれば値の 1 を戻し、 SQL トランザクションが現在アクティブでなければ 0 を戻します。
TRANSACTIONS_COMMITTED
直前のステートメントが CALL であった場合、 SQL または外部プロシージャーの実行中にコミットされたトランザクション数を戻します。 その他の場合は、値 0 を戻します。
TRANSACTIONS_ROLLED_BACK
直前のステートメントが CALL であった場合、 SQL または外部プロシージャーの実行中にロールバックされたトランザクション数を戻します。 その他の場合は、値 0 を戻します。

接続情報項目

CONNECTION_NAME
直前の SQL ステートメントが CONNECT、DISCONNECT、または SET CONNECTION の場合、 直前のステートメントで指定されたサーバー名を戻します。 その他の場合、現行接続の名前を戻します。
DB2_AUTHENTICATION_TYPE
認証タイプがサーバーかクライアントかを示します。
  • C は、クライアント認証を示します。
  • E は、DCE セキュリティー・サービス認証を示します。
  • S は、サーバー認証を示します。
その他の場合は、ブランクを戻します。
DB2_AUTHORIZATION_ID
接続先のサーバーによって使用される認証 ID を戻します。 ユーザー ID の翻訳および与信の出口プログラムのため、 ローカルのユーザー ID はサーバーが使用する認証 ID と異なることがあります。
DB2_CONNECTION_METHOD
CONNECT または SET CONNECTION ステートメントでは、接続メソッドを戻します。
  • D は、*DUW (分散作業単位) を戻します。
  • R は、*RUW (リモート作業単位) を戻します。
DB2_CONNECTION_NUMBER
接続の数を戻します。
DB2_CONNECTION_STATE
接続状態が、接続かどうかを示します。
  • -1 は、接続が未接続であることを示します。
  • 1 は、接続が接続であることを示します。
その他の場合は、値 0 を戻します。
DB2_CONNECTION_STATUS
コミット可能な更新を実行できるかどうかを示します。
  • 1 は、この作業単位の接続で、コミット可能な更新を行うことができることを示します。
  • 2 は、この作業単位の接続で、コミット可能な更新を行うことはできないことを示します。
その他の場合は、値 0 を戻します。
DB2_CONNECTION_TYPE
接続タイプ (ローカル、リモート、またはドライバー・プログラム)、 および会話が保護されているかどうかを示します。
  • 1 は、ローカルのリレーショナル・データベースとの接続を示します。
  • 2 は、会話が保護されない、遠隔のリモート・リレーショナル・データベースとの接続を示します。
  • 3 は、会話が保護される、遠隔のリモート・リレーショナル・データベースとの接続を示します。
  • 4 は、アプリケーション・リクエスターのドライバー・プログラムとの接続を示します。
その他の場合は、値 0 を戻します。
DB2_DYN_QUERY_MGMT
DYN_QUERY_MGMT データベース構成パラメーターが使用可能である場合、 値の 1 を戻します。 その他の場合は、値 0 を戻します。
DB2_ENCRYPTION_TYPE
暗号化のレベルを戻します。
  • A は、認証されたトークン (認証 ID およびパスワード) だけが暗号化されることを示します。
  • D は、すべてのデータが接続のために暗号化されていることを示します。
その他の場合は、ブランクを戻します。
DB2_PRODUCT_ID
製品シグニチャーを戻します。アプリケーション・サーバーが IBM® リレーショナル・データベースのプロダクトである場合、形式は pppvvrrm となります。ここで、
  • ppp は、以下のようにプロダクトを示します。ARI は DB2® (VM および VSE 版)、DSN は DB2 for z/OS®、QSQ は DB2 for i、および SQL は他のすべての DB2 プロダクトです。
  • vv は、2 桁のバージョン ID です (例えば、'04' など)。
  • rr は、2 桁のリリース ID です (例えば、'01' など)。
  • m は、1 桁のモディフィケーション・レベルを示します (例えば、'0' など)。
例えば、アプリケーション・サーバーが DB2 for z/OS のバージョン 7 である場合、この値は 'DSN07010' となります。 その他の場合は、空ストリングを戻します。
DB2_SERVER_CLASS_NAME
サーバー・クラス名を戻します。 例えば、DB2 for z/OS、DB2 for AIX®、DB2 for Windows、および DB2 for i などです。
DB2_SERVER_NAME
CONNECT または SET CONNECTION ステートメントの場合、リレーショナル・データベース名を戻します。 その他の場合は、空ストリングを戻します。

条件情報項目

CATALOG_NAME
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約が参照制約、検査制約、またはユニーク制約であれば、 その制約を所有する表のサーバー名を戻します。

戻される SQLSTATE がクラス 42 (構文エラーまたはアクセス規則違反) の場合、 エラーを生じた表のサーバー名を戻します。

戻される SQLSTATE がクラス 44 (WITH CHECK OPTION 違反) の場合、 エラーを生じたビューのサーバー名を戻します。 その他の場合は、空ストリングを戻します。

CLASS_ORIGIN
クラスが ISO 9075 で定義されている SQLSTATE に対しては、'ISO 9075' を戻します。 クラスが SQL/MM で定義されている SQLSTATE に対しては、'ISO/IEC 13249' を戻します。 クラスが IBM DB2 SQL で定義されている SQLSTATE に対しては、'DB2 SQL' を戻します。使用可能であれば、ユーザー作成コードによって設定された値を戻します。 その他の場合は、空ストリングを戻します。
COLUMN_NAME
戻される SQLSTATE がクラス 42 (構文エラーまたはアクセス規則違反) であり、 エラーがアクセス不能な列によって生じた場合は、 エラーを生じた表のサーバー名を戻します。 その他の場合は、空ストリングを戻します。
CONDITION_IDENTIFIER
RETURNED_SQLSTATE の値が 未処理のユーザー定義例外 (SQLSTATE 45000) に対応する場合、 そのユーザー定義例外の条件名を戻します。
CONDITION_NUMBER
条件の数を戻します。
CONSTRAINT_CATALOG
戻される SQLSTATE が、
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約を含む表を含む、サーバー名を戻します。 その他の場合は、空ストリングを戻します。
CONSTRAINT_NAME
戻される SQLSTATE が、
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約の名前を戻します。 その他の場合は、空ストリングを戻します。
CONSTRAINT_SCHEMA
戻される SQLSTATE が、
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約のスキーマ名を戻します。 その他の場合は、空ストリングを戻します。
CURSOR_NAME
戻される SQLSTATE がクラス 24 (無効なカーソル状態) の場合、 カーソル名を戻します。 その他の場合は、空ストリングを戻します。
DB2_ERROR_CODE1
内部エラー・コードを戻します。 その他の場合は、値 0 を戻します。
DB2_ERROR_CODE2
内部エラー・コードを戻します。 その他の場合は、値 0 を戻します。
DB2_ERROR_CODE3
内部エラー・コードを戻します。 その他の場合は、値 0 を戻します。
DB2_ERROR_CODE4
内部エラー・コードを戻します。 その他の場合は、値 0 を戻します。
DB2_INTERNAL_ERROR_POINTER
いくつかのエラーについては、これは内部エラー・ポインターである負の値となります。 その他の場合は、値 0 を戻します。
DB2_LINE_NUMBER
SQL プロシージャー本体を構文解析中にエラーが 検出された SQL 関数、SQL プロシージャー、または SQL トリガーの CREATE PROCEDURE では、 エラーが生じた可能性のある行番号を戻します。 その他の場合は、値 0 を戻します。
DB2_MESSAGE_ID
MESSAGE_TEXT に対応するメッセージ ID を戻します。
DB2_MESSAGE_ID1
このエラーを最初に生じた、基礎となる IBM i CPF エスケープ・メッセージを戻します。 その他の場合は、空ストリングを戻します。
DB2_MESSAGE_ID2
このエラーを最初に生じた、基礎となる IBM i CPD 診断メッセージを戻します。 その他の場合は、空ストリングを戻します。
DB2_MESSAGE_KEY
CALL ステートメントの場合、プロシージャーが正常に実行されなかった原因となった、 エラーの IBM i メッセージ・キーを戻します。 DELETE、INSERT、または UPDATE ステートメント内のトリガー・エラーの場合、 トリガー・プログラムからシグナルで通知されたエラーのメッセージ・キーを戻します。 IBM i QMHRCVPM API は、そのメッセージ・キーおよびメッセージ・データのメッセージ記述を戻すために使用できます。 その他の場合は、値 0 を戻します。
DB2_MODULE_DETECTING_ERROR
どのモジュールがエラーを検出したかを示す ID を戻します。 ルーチンから発行される SIGNAL ステートメントの場合、値 'ROUTINE' を戻します。 その他の SIGNAL ステートメントの場合、値 'PROGRAM' を戻します。
DB2_NUMBER_FAILING_STATEMENTS
NOT ATOMIC 組み込みコンパウンド SQL ステートメントの場合、 失敗したステートメントの数を戻します。 その他の場合は、値 0 を戻します。
DB2_OFFSET
SQL プロシージャー本体を構文解析中にエラーが 検出された SQL プロシージャーの CREATE PROCEDURE では、 使用可能な場合、エラーが生じた可能性のある行番号へのオフセットを戻します。 ソース・ステートメントを構文解析中にエラーが検出された EXECUTE IMMEDIATE または PREPARE ステートメントでは、 エラーが生じた可能性のあるソース・ステートメントへのオフセットを戻します。 その他の場合は、値 0 を戻します。
DB2_ORDINAL_TOKEN_n
n 番目のトークンを戻します。 n は、1 から 100 までの値でなければなりません。 例えば、DB2_ORDINAL_TOKEN_1 は最初のトークンを戻し、 DB2_ORDINAL_TOKEN_2 は 2 番目のトークンを戻します。 トークンの数値は、戻される前に文字に変換されます。 トークンの値が存在しない場合、空ストリングを戻します。
DB2_PARTITION_NUMBER
パーティション・データベースの場合、 エラーまたは警告が検出されたデータベース・パーティションのパーティション番号を戻します。 エラーまたは警告が検出されなかった場合、 現行ノードのパーティション番号を戻します。 その他の場合は、値 0 を戻します。
DB2_REASON_CODE
メッセージ・テキスト内に理由コード・トークンがあるエラーの理由コードを戻します。 その他の場合は、値 0 を戻します。
DB2_RETURNED_SQLCODE
指定された診断の SQLCODE を戻します。
DB2_ROW_NUMBER
直前の SQL ステートメントが複数行の挿入または複数行の取り出しである場合、 条件が検出された行の番号が使用可能で適用可能な場合、その値を戻します。 その他の場合は、値 0 を戻します。
DB2_SQLERRD_SET
DB2_SQLERRD1 から DB2_SQLERRD6 の項目が設定可能であることを示すには、Y を戻します。 その他の場合は、ブランクを戻します。
DB2_SQLERRD1
サーバーによって戻された SQLCA から、値の SQLERRD(1) を戻します。
DB2_SQLERRD2
サーバーによって戻された SQLCA から、値の SQLERRD(2) を戻します。
DB2_SQLERRD3
サーバーによって戻された SQLCA から、値の SQLERRD(3) を戻します。
DB2_SQLERRD4
サーバーによって戻された SQLCA から、値の SQLERRD(4) を戻します。
DB2_SQLERRD5
サーバーによって戻された SQLCA から、値の SQLERRD(5) を戻します。
DB2_SQLERRD6
サーバーによって戻された SQLCA から、値の SQLERRD(6) を戻します。
DB2_TOKEN_COUNT
指定された診断での、使用可能なトークンの数を戻します。
DB2_TOKEN_STRING
指定された診断についての、X'FF' 区切り文字で区切られているトークンのストリングを戻します。
MESSAGE_LENGTH
直前に実行された SQL ステートメントから戻されたエラー、警告、 または正常な完了のメッセージ・テキストの長さを (文字数で) 示します。
MESSAGE_OCTET_LENGTH
直前に実行された SQL ステートメントから戻されたエラー、警告、 または正常な完了のメッセージ・テキストの長さを (バイト数で) 示します。
MESSAGE_TEXT
直前に実行された SQL ステートメントから戻されたエラー、警告、 または正常な完了のメッセージ・テキストを示します。

SQLCODE が 0 の場合は、空ストリングが戻されます。これは、RETURNED_SQLSTATE の値が警告状態を示す場合にも該当します。

PARAMETER_MODE
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 i 番目のパラメーターのパラメーター・モードを戻します。 その他の場合は、空ストリングを戻します。
PARAMETER_NAME
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
であり、条件がルーチンの i 番目のパラメーターに関連していて、 ルーチンの作成時にパラメーターに対してパラメーター名が指定されている場合、 i 番目のパラメーターのパラメーター名を戻します。 その他の場合は、空ストリングを戻します。
PARAMETER_ORDINAL_POSITION
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 i の値を戻します。 その他の場合は、空ストリングを戻します。
RETURNED_SQLSTATE
指定された診断の SQLSTATE を戻します。
ROUTINE_CATALOG
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 または戻される SQLSTATE が以下の場合であって、
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
ルーチン呼び出しの際に SQL パラメーターに割り当てを行った結果として条件が発生した場合は、 ルーチンのサーバー名を戻します。 その他の場合は、空ストリングを戻します。
ROUTINE_NAME
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 または戻される SQLSTATE が以下の場合であって、
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
ルーチン呼び出しの際に SQL パラメーターに割り当てを行った結果として条件が発生した場合は、 ルーチンの名前を戻します。 その他の場合は、空ストリングを戻します。
ROUTINE_SCHEMA
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 または戻される SQLSTATE が以下の場合であって、
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
ルーチン呼び出しの際に SQL パラメーターに割り当てを行った結果として条件が発生した場合は、 ルーチンのスキーマ名を戻します。 その他の場合は、空ストリングを戻します。
SCHEMA_NAME
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約が参照制約、検査制約、またはユニーク制約であれば、 その制約を所有する表のスキーマ名を戻します。

戻される SQLSTATE がクラス 42 (構文エラーまたはアクセス規則違反) の場合、 エラーを生じた表のスキーマ名を戻します。

戻される SQLSTATE がクラス 44 (WITH CHECK OPTION 違反) の場合、 エラーを生じたビューのスキーマ名を戻します。 その他の場合は、空ストリングを戻します。

SERVER_NAME
直前の SQL ステートメントが CONNECT、DISCONNECT、または SET CONNECTION の場合、 直前のステートメントで指定されたサーバー名を戻します。 その他の場合、ステートメントが実行されたサーバーの名前を戻します。
SPECIFIC_NAME
戻される SQLSTATE が、
  • クラス 39 (外部ルーチン呼び出し例外)、または
  • クラス 38 (外部ルーチン例外)、または
  • クラス 2F (SQL ルーチン例外)、または
であり、条件がルーチンの i 番目のパラメーターに関連する場合、 または戻される SQLSTATE が以下の場合であって、
  • クラス 22 (データ例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 01 (警告)
ルーチン呼び出しの際に SQL パラメーターに割り当てを行った結果として条件が発生した場合は、 プロシージャーまたは関数の特定名を戻します。 その他の場合は、空ストリングを戻します。
SUBCLASS_ORIGIN
サブクラスが ISO 9075 で定義されている SQLSTATE に対しては、'ISO 9075' を戻します。 サブクラスが RDA で定義されている SQLSTATE に対しては、'ISO/IEC 9579' を戻します。 サブクラスが SQL/MM で定義されている SQLSTATE に対しては、 'ISO/IEC 13249-1'、'ISO/IEC 13249-2'、 'ISO/IEC 13249-3'、'ISO/IEC 13249-4'、 または 'ISO/IEC 13249-5' を戻します。 サブクラスが IBM DB2 SQL で定義されている SQLSTATE に対しては、'DB2 SQL' を戻します。使用可能であれば、ユーザー作成コードによって設定された値を戻します。 その他の場合は、空ストリングを戻します。
TABLE_NAME
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 23 (保全性制約違反)、または
  • クラス 27 (トリガー・データ変更違反)、または
  • 40002 (トランザクション・ロールバック - 保全性制約違反) の場合、
エラーを生じた制約が参照制約、検査制約、またはユニーク制約であれば、 その制約を所有する表の名前を戻します。

戻される SQLSTATE がクラス 42 (構文エラーまたはアクセス規則違反) の場合、 エラーを生じた表の名前を戻します。

戻される SQLSTATE がクラス 44 (WITH CHECK OPTION 違反) の場合、 エラーを生じた表の名前を戻します。 その他の場合は、空ストリングを戻します。

TRIGGER_CATALOG
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 27 (トリガー・データ変更違反) の場合、
トリガーの名前を戻します。 その他の場合は、空ストリングを戻します。
TRIGGER_NAME
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 27 (トリガー・データ変更違反) の場合、
トリガーの名前を戻します。 その他の場合は、空ストリングを戻します。
TRIGGER_SCHEMA
戻される SQLSTATE が、
  • クラス 09 (トリガー・アクション例外)、または
  • クラス 27 (トリガー・データ変更違反) の場合、
トリガーのスキーマ名を戻します。 その他の場合は、空ストリングを戻します。

診断領域に関する考慮事項: GET DIAGNOSTICS ステートメントは、DB2_GET_DIAGNOSTICS_DIAGNOSTICS を除き、診断領域の内容を変更することはありません。

SQL 関数、SQL プロシージャー、またはトリガー内で GET DIAGNOSTICS ステートメント が指定される場合、次のとおりです。
  • エラーに関する情報が必要な場合、GET DIAGNOSTICS ステートメントは、エラーを処理するハンドラー内に 指定される最初の実行可能ステートメントでなければなりません。
  • 警告に関する情報が必要な場合:
    • ハンドラーがその警告条件に対する制御を取得する場合、GET DIAGNOSTICS ステートメントは、そのハンドラーに指定された最初のステートメント でなければなりません。
    • ハンドラーがその警告条件に対する制御を取得しない場合、GET DIAGNOSTICS ステートメントは、その直前のステートメントの次に実行され るステートメントでなければなりません。

それ以外の場合、GET DIAGNOSTICS ステートメント は、最後に実行されたステートメントに関する情報を戻します。

SQLCODE および SQLSTATE SQL 変数に関する考慮事項: GET DIAGNOSTICS ステートメントは、SQLSTATE および SQLCODE SQL 変数の値を変更することはありません。

戻り値の大文字小文字の区別: 戻される診断項目に含まれる ID の値は、 引用符で区切られず、大文字小文字を区別します。 例えば、表の名前 "abc" は単に abc として戻されます。

変数の割り当て: 割り当てエラーが発生すると、変数の値は予測不能になります。

項目のデータ・タイプ: 以下の表は、 診断項目ごとの SQL データ・タイプを示しています。 診断項目が変数に割り当てられるとき、変数は診断項目のデータ・タイプと互換性がなければなりません。

表 1. GET DIAGNOSTICS 項目のデータ・タイプ
項目名 データ・タイプ
ステートメント情報項目
COMMAND_FUNCTION VARCHAR(128)
COMMAND_FUNCTION_CODE INTEGER
DB2_DIAGNOSTIC_CONVERSION_ERROR INTEGER
DB2_GET_DIAGNOSTICS_DIAGNOSTICS VARCHAR(32740)
DB2_LAST_ROW INTEGER
DB2_NUMBER_CONNECTIONS INTEGER
DB2_NUMBER_PARAMETER_MARKERS INTEGER
DB2_NUMBER_RESULT_SETS INTEGER
DB2_NUMBER_ROWS DECIMAL(31,0)
DB2_NUMBER_SUCCESSFUL_SUBSTMTS INTEGER
DB2_RELATIVE_COST_ESTIMATE INTEGER
DB2_RETURN_STATUS INTEGER
DB2_ROW_COUNT_SECONDARY DECIMAL(31,0)
DB2_ROW_LENGTH INTEGER
DB2_SQL_ATTR_CONCURRENCY CHAR(1)
DB2_SQL_ATTR_CURSOR_CAPABILITY CHAR(1)
DB2_SQL_ATTR_CURSOR_HOLD CHAR(1)
DB2_SQL_ATTR_CURSOR_ROWSET CHAR(1)
DB2_SQL_ATTR_CURSOR_SCROLLABLE CHAR(1)
DB2_SQL_ATTR_CURSOR_SENSITIVITY CHAR(1)
DB2_SQL_ATTR_CURSOR_TYPE CHAR(1)
DB2_SQL_NESTING_LEVEL INTEGER
DYNAMIC_FUNCTION VARCHAR(128)
DYNAMIC_FUNCTION_CODE INTEGER
MORE CHAR(1)
NUMBER INTEGER
ROW_COUNT DECIMAL(31,0)
TRANSACTION_ACTIVE INTEGER
TRANSACTIONS_COMMITTED INTEGER
TRANSACTIONS_ROLLED_BACK INTEGER
接続情報項目
CONNECTION_NAME VARCHAR(128)
DB2_AUTHENTICATION_TYPE CHAR(1)
DB2_AUTHORIZATION_ID VARCHAR(128)
DB2_CONNECTION_METHOD CHAR(1)
DB2_CONNECTION_NUMBER INTEGER
DB2_CONNECTION_STATE INTEGER
DB2_CONNECTION_STATUS INTEGER
DB2_CONNECTION_TYPE SMALLINT
DB2_DYN_QUERY_MGMT INTEGER
DB2_ENCRYPTION_TYPE CHAR(1)
DB2_PRODUCT_ID VARCHAR(8)
DB2_SERVER_CLASS_NAME VARCHAR(128)
DB2_SERVER_NAME VARCHAR(128)
条件情報項目
CATALOG_NAME VARCHAR(128)
CLASS_ORIGIN VARCHAR(128)
COLUMN_NAME VARCHAR(128)
CONDITION_IDENTIFIER VARCHAR(128)
CONDITION_NUMBER INTEGER
CONSTRAINT_CATALOG VARCHAR(128)
CONSTRAINT_NAME VARCHAR(128)
CONSTRAINT_SCHEMA VARCHAR(128)
CURSOR_NAME VARCHAR(128)
DB2_ERROR_CODE1 INTEGER
DB2_ERROR_CODE2 INTEGER
DB2_ERROR_CODE3 INTEGER
DB2_ERROR_CODE4 INTEGER
DB2_INTERNAL_ERROR_POINTER INTEGER
DB2_LINE_NUMBER INTEGER
DB2_MESSAGE_ID CHAR(10)
DB2_MESSAGE_ID1 VARCHAR(7)
DB2_MESSAGE_ID2 VARCHAR(7)
DB2_MESSAGE_KEY INTEGER
DB2_MODULE_DETECTING_ERROR VARCHAR(128)
DB2_NUMBER_FAILING_STATEMENTS INTEGER
DB2_OFFSET INTEGER
DB2_ORDINAL_TOKEN_n VARCHAR(32740)
DB2_PARTITION_NUMBER INTEGER
DB2_REASON_CODE INTEGER
DB2_RETURNED_SQLCODE INTEGER
DB2_ROW_NUMBER INTEGER
DB2_SQLERRD_SET CHAR(1)
DB2_SQLERRD1 INTEGER
DB2_SQLERRD2 INTEGER
DB2_SQLERRD3 INTEGER
DB2_SQLERRD4 INTEGER
DB2_SQLERRD5 INTEGER
DB2_SQLERRD6 INTEGER
DB2_TOKEN_COUNT INTEGER
DB2_TOKEN_STRING VARCHAR(1000)
MESSAGE_LENGTH INTEGER
MESSAGE_OCTET_LENGTH INTEGER
MESSAGE_TEXT VARCHAR(32740)
PARAMETER_MODE VARCHAR(5)
PARAMETER_NAME VARCHAR(128)
PARAMETER_ORDINAL_POSITION INTEGER
RETURNED_SQLSTATE CHAR(5)
ROUTINE_CATALOG VARCHAR(128)
ROUTINE_NAME VARCHAR(128)
ROUTINE_SCHEMA VARCHAR(128)
SCHEMA_NAME VARCHAR(128)
SERVER_NAME VARCHAR(128)
SPECIFIC_NAME VARCHAR(128)
SUBCLASS_ORIGIN VARCHAR(128)
TABLE_NAME VARCHAR(128)
TRIGGER_CATALOG VARCHAR(128)
TRIGGER_NAME VARCHAR(128)
TRIGGER_SCHEMA VARCHAR(128)

SQL ステートメントのコードおよびストリング: 以下の表は、COMMAND_FUNCTION、COMMAND_FUNCTION_CODE、 DYNAMIC_FUNCTION、および DYNAMIC_FUNCTION_CODE 診断項目の 可能な値を示しています。

以下の表の値は、ISO および ANSI SQL Standard によって割り当てられていて、 この規格の発展に応じて変更される可能性があります。 これらの値を参照するときには、 ライブラリー QSYSINC 内のインクルード・ソース・ファイルにある インクルード sqlscds を使用してください。

表 2. SQL ステートメントのコードおよびストリング
ステートメントのタイプ ステートメント・ストリング ステートメント・コード
ALLOCATE CURSOR ALLOCATE CURSOR 1
ALLOCATE DESCRIPTOR ALLOCATE DESCRIPTOR 2
ALTER FUNCTION ALTER ROUTINE 17
ALTER MASK ALTER MASK –100
ALTER PERMISSION ALTER PERMISSION –103
ALTER PROCEDURE ALTER ROUTINE 17
ALTER SEQUENCE ALTER SEQUENCE 134
ALTER TABLE ALTER TABLE 4
ALTER TRIGGER ALTER TRIGGER –99
割り当て (assignment) ステートメント ASSIGNMENT 5
ASSOCIATE LOCATORS ASSOCIATE LOCATORS -6
CALL CALL 7
CASE CASE 86
CLOSE (静的 SQL) CLOSE CURSOR 9
CLOSE (動的 SQL) DYNAMIC CLOSE CURSOR 37
COMMENT COMMENT -7
COMMIT COMMIT WORK 11
複合 (compound) ステートメント BEGIN END 12
CONNECT CONNECT 13
CREATE ALIAS CREATE ALIAS –8
CREATE FUNCTION CREATE ROUTINE 14
CREATE INDEX CREATE INDEX -14
CREATE MASK CREATE MASK –101
CREATE PERMISSION CREATE PERMISSION –104
CREATE PROCEDURE CREATE ROUTINE 14
CREATE SCHEMA CREATE SCHEMA 64
CREATE SEQUENCE CREATE SEQUENCE 133
CREATE TABLE CREATE TABLE 77
CREATE TRIGGER CREATE TRIGGER 80
CREATE TYPE CREATE TYPE 83
CREATE VARIABLE CREATE VARIABLE -83
CREATE VIEW CREATE VIEW 84
DEALLOCATE DESCRIPTOR DEALLOCATE DESCRIPTOR 15
DECLARE GLOBAL TEMPORARY TABLE DECLARE GLOBAL TEMPORARY TABLE -21
位置指定された DELETE (静的 SQL) DELETE CURSOR 18
位置指定された DELETE (動的 SQL) DYNAMIC DELETE CURSOR 38
検索された DELETE DELETE WHERE 19
DESCRIBE DESCRIBE 20
DESCRIBE CURSOR DESCRIBE CURSOR RESULT SET -72
DESCRIBE PROCEDURE DESCRIBE PROCEDURE -23
DESCRIBE TABLE DESCRIBE TABLE -24
DISCONNECT DISCONNECT 22
DROP ALIAS DROP ALIAS -25
DROP FUNCTION DROP ROUTINE 30
DROP INDEX DROP INDEX -30
DROP MASK DROP MASK –102
DROP PACKAGE DROP PACKAGE -32
DROP PERMISSION DROP PERMISSION –105
DROP PROCEDURE DROP ROUTINE 30
DROP SCHEMA DROP SCHEMA 31
DROP SEQUENCE DROP SEQUENCE 135
DROP TABLE DROP TABLE 32
DROP TRIGGER DROP TRIGGER 34
DROP TYPE DROP TYPE 35
DROP VARIABLE DROP VARIABLE -84
DROP XSROBJECT DROP XSROBJECT -95
DROP VIEW DROP VIEW 36
EXECUTE EXECUTE 44
EXECUTE IMMEDIATE EXECUTE IMMEDIATE 43
FETCH (静的 SQL) FETCH 45
FETCH (動的 SQL) DYNAMIC FETCH 39
FOR FOR 46
FREE LOCATOR FREE LOCATOR 98
GET DESCRIPTOR GET DESCRIPTOR 47
GOTO GOTO -37
GRANT (任意のタイプ) GRANT 48
HOLD LOCATOR HOLD LOCATOR 99
IF IF 88
INSERT INSERT 50
ITERATE ITERATE 102
LABEL LABEL -39
LEAVE LEAVE 89
LOCK TABLE LOCK TABLE -40
LOOP LOOP 90
MERGE MERGE 128
OPEN (静的 SQL) OPEN 53
OPEN (動的 SQL) DYNAMIC OPEN 40
PREPARE PREPARE 56
準備済みの位置指定された DELETE (動的 SQL) PREPARABLE DYNAMIC DELETE CURSOR 54
準備済みの位置指定された UPDATE (動的 SQL) PREPARABLE DYNAMIC UPDATE CURSOR 55
REFRESH TABLE REFRESH TABLE -41
RELEASE (接続) RELEASE CONNECTION -42
RELEASE SAVEPOINT RELEASE SAVEPOINT 57
RENAME INDEX RENAME INDEX -43
RENAME TABLE RENAME TABLE -44
REPEAT REPEAT 95
RESIGNAL RESIGNAL 91
RETURN RETURN 58
REVOKE (任意のタイプ) REVOKE 59
ROLLBACK ROLLBACK WORK 62
SAVEPOINT SAVEPOINT 63
SELECT INTO SELECT 65
選択ステートメント (動的 SQL) SELECT CURSOR 85
SET CONNECTION SET CONNECTION 67
SET CURRENT DEBUG MODE SET CURRENT DEBUG MODE -75
SET CURRENT DECFLOAT ROUNDING MODE SET CURRENT DECFLOAT ROUNDING MODE -82
SET CURRENT DEGREE SET CURRENT DEGREE -47
SET CURRENT IMPLICIT XMLPARSE OPTION SET CURRENT IMPLICIT XMLPARSE OPT -90
変更の始まりSET CURRENT TEMPORAL SYSTEM_TIME変更の終わり 変更の始まりSET CURRENT TEMPORAL SYSTEM_TIME変更の終わり 変更の始まり–98変更の終わり
SET DESCRIPTOR SET DESCRIPTOR 70
SET ENCRYPTION PASSWORD SET ENCRYPTION PASSWORD -48
SET PATH SET PATH 69
SET RESULT SETS SET RESULT SETS -64
SET SCHEMA SET SCHEMA 74
SET SESSION AUTHORIZATION SET SESSION AUTHORIZATION 76
SET TRANSACTION SET TRANSACTION 75
SET 遷移変数 ASSIGNMENT 5
SET 変数 ASSIGNMENT 5
SIGNAL SIGNAL 92
TRANSFER OWNERSHIP TRANSFER OWNERSHIP –77
TRUNCATE TABLE TRUNCATE TABLE –74
位置指定された UPDATE (静的 SQL) UPDATE CURSOR 81
位置指定された UPDATE (動的 SQL) DYNAMIC UPDATE CURSOR 42
検索された UPDATE UPDATE WHERE 82
VALUES STANDALONE FULLSELECT -69
VALUES INTO VALUES INTO -66
WHILE WHILE 97
認識されないステートメント 長さがゼロのストリング 0

代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。

  • キーワード EXCEPTION を CONDITION の同義語として使用することができます。
  • キーワード RETURN_STATUS を DB2_RETURN_STATUS の同義語として使用することができます。

SQL プロシージャーにおいて、GET DIAGNOSTICS ステートメントを実行して、更新された行数を判別します。

   CREATE PROCEDURE sqlprocg (IN deptnbr VARCHAR(3))
     LANGUAGE SQL
     BEGIN
       DECLARE SQLSTATE CHAR(5);
       DECLARE rcount INTEGER;
       UPDATE CORPDATA.PROJECT
         SET PRSTAFF = PRSTAFF + 1.5
         WHERE DEPTNO = deptnbr;
       GET DIAGNOSTICS rcount = ROW_COUNT;
       /* At this point, rcount contains the number of rows that were updated. */
     END
       

SQL プロシージャー内部で、TRYIT というストアード・プロシージャー の呼び出しから戻された状況値を処理します。 TRYIT で RETURN ステートメントを使用して状況値を明示的に戻すこと もでき、データベース・マネージャーから状況値が暗黙的に戻されることも あります。 このプロシージャーは、正常に実行されると、値ゼロを戻します。

   CREATE PROCEDURE TESTIT ()
     LANGUAGE SQL
     A1: BEGIN
         DECLARE RETVAL INTEGER DEFAULT 0;
         ...
         CALL TRYIT
         GET DIAGNOSTICS RETVAL = RETURN_STATUS;
         IF RETVAL <> 0 THEN
            ...
            LEAVE A1;
         ELSE
            ...
         END IF;
     END A1
       

SQL プロシージャーで、GET DIAGNOSTICS ステートメントを実行して、エラーのメッセージ・テキストを取り出します。

   CREATE PROCEDURE divide2 ( IN  numerator INTEGER,
 	                            IN  denominator INTEGER, 
	                             OUT divide_result INTEGER, 
                              OUT divide_error VARCHAR(70) )
  LANGUAGE SQL
    BEGIN
       DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 
          GET DIAGNOSTICS CONDITION 1
            divide_error = MESSAGE_TEXT;
       SET divide_result = numerator / denominator;
    END;