SQLGetDiagRec - 診断レコードの複数のフィールド設定値の取得

目的


仕様: DB2 CLI 5.0 ODBC 3.0

SQLGetDiagRec() は、エラー、警告、および状況情報が入っている 診断レコードの SQLSTATE フィールドの現行値を戻します。

接続ハンドルは、この関数の呼び出し前に、SQLAllocHandle() を使用 して割り当てる必要があります。

構文

SQLRETURN   SQLGetDiagRec    (SQLSMALLINT       HandleType,
                              SQLHANDLE         Handle,
                              SQLSMALLINT       RecNumber,
                              SQLCHAR           *SQLState,
                              SQLINTEGER        *NativeErrorPtr,
                              SQLCHAR           *MessageText,
                              SQLSMALLINT       BufferLength,
                              SQLSMALLINT       *TextLengthPtr);

関数の引き数


表 68. SQLGetDiagRec の引き数

データ・タイプ 引き数 用途 説明
SQLSMALLINT HandleType 入力 診断が必要なハンドルのタイプについて記述するハンドル・タイプ ID。SQL_HANDLE_STMT または SQL_HANDLE_DBC を取ることができる。
SQLHANDLE Handle 入力 HandleType によって示されるタイプの診断データ構造のハンドル。
SQLSMALLINT RecNumber 入力 アプリケーションが情報を取り出そうとするための状況レコードを示す。 状況レコードは 1 でなければならない。
SQLCHAR SQLState 出力 診断レコード RecNumber に関する 5 文字の SQLSTATE コードを戻す バッファーへのポインター。最初の 2 文字がクラスを示し、 次の 3 文字がサブクラスを示す。
SQLINTEGER NativeErrorPtr 出力 データ・ソースに特定の ネイティブ・エラー・コードを戻すためのバッファーへのポインター。
SQLCHAR MessageText 出力 エラー・メッセージ・テキストを戻すためのバッファーへのポインター。 SQLGetDiagRec() によって戻されるフィールドはテキスト・ストリング に含まれる。
SQLINTEGER BufferLength 入力 MessageText バッファーの長さ (バイト単位)。
SQLSMALLINT TextLengthPtr 出力 MessageText に戻すことができる合計バイト数 (ヌル終了文字に必要 なバイト数を除く) を戻すためのバッファーを指すポインター。 戻すことができるバイト数が BufferLength より大きい場合 、MessageText 内のエラー・メッセージ・テキストは 切り捨てられて、BufferLength からヌル終了文字の長さを引いた文字数になる。

使用法

アプリケーションでは一般的に、DB2 CLI 関数への前の呼び出しで SQL_SUCCESS 以外のものが戻された場合に、SQLGetDiagRec() を呼び出しま す。

SQLGetDiagRec() は、診断データ構造レコードの複数のフィールドを 含む文字ストリングを戻します。

DB2 Everyplace バージョン 8.1 では、SQLGetDiagRec() の機能が拡張されました。 57011、HY024、HY092、HY000、HY012 の SQLSTATE を戻すことができるようになりました。 これらの SQLSTATE の詳細については、SQLState のリストを参照してください。

SQLGetDiagRec() は、Handle 引き数に指定したハンドルに 最後に関連付けられた診断情報のみを検索します。アプリケーションで SQLGetDiagRec() 以外の関数を呼び出すと、同じハンドルに 関する前の呼び出しからの診断情報が消失します。

HandleType 引き数

各ハンドル・タイプは関連する診断情報を持つことができます。 HandleType 引き数は Handle のハンドル・タイプを示します。 DB2 Everyplace ではステートメント・ハンドルおよび接続ハンドルをサポートしています。

戻りコード

診断

SQLGetDiagRec() は自身に関するエラー値を通知しません。 この関数は自身の実行の結果を報告するために、以下の戻り値を使用します。

SQL_SUCCESS
関数が診断情報を正常に戻しました。

SQL_SUCCESS_WITH_INFO
MessageText バッファーが小さすぎて、要求された診断メッセージ を収容できません。 診断レコードは生成されません。切り捨てが発生した かどうかを判別するには、StringLengthPtr に書き込まれ た使用可能な実際のバイト数と BufferLength をアプリケーションによって比較する必要があります。

SQL_INVALID_HANDLE
HandleTypeHandle によって示されたハンドルが 有効なハンドルではありません。

SQL_ERROR
以下のいずれかの場合が考えられます。

SQL_NO_DATA
RecNumber が、Handle に指定したハンドルに関して存在した診断レコード数を超えています。 この関数は、Handle に関する 診断レコードがない場合、すべての正の RecNumber に 関して SQL_NO_DATA も戻します。

制約事項

なし。

関連した解説