ODBC 行状況配列

行状況配列は行セットの各行の状況を戻します。

アプリケーションで行状況配列を割り振ります。 それから、この配列のアドレスを SQL_ATTR_ROW_STATUS_PTR ステートメント属性で指定します。 配列の要素数は、SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性で指定した数と同じでなければなりません。 SQLExtendedFetch()SQLFetchScroll()、または SQLSetPos() は、カーソルが SQLExtendedFetch() によって位置づけられた後にこれらのメソッドが呼び出された場合を除き、行ステータス配列の値を設定します。 SQL_ATTR_ROW_STATUS_PTR ステートメント属性の値が NULL ポインターの場合は、SQLExtendedFetch()SQLFetchScroll()、および SQLSetPos() は行状況を戻しません。

行状況配列バッファーの内容は、SQLExtendedFetch() または SQLFetchScroll() が SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を戻さない場合、定義されません。

以下の値が行状況配列に返されます。
表 1. 行状況配列で戻される値
行状況配列の値 説明
SQL_ROW_SUCCESS 行が正常にフェッチされました。
SQL_ROW_SUCCESS_WITH_INFO 行は正常にフェッチされましたが、行について警告が戻されました。
SQL_ROW_ERROR 行がフェッチされた時にエラーが発生しました。
SQL_ROW_ADDED この行は SQLBulkOperations() に挿入されました。 行が再びフェッチされて、SQLSetPos() でリフレッシュされると、その状況は SQL_ROW_SUCCESS になります。

この値は、SQLExtendedFetch() または SQLFetchScroll() によっては設定されません。

Db2 ODBC は、挿入された行を両方向スクロール・カーソルの結果セットで可視にしないため、この値を戻しません。

SQL_ROW_UPDATED 行は正常にフェッチされ、 この結果セットからフェッチされた最後のフェッチ以降に更新されています。 この結果セットから行が再びフェッチされるか、SQLSetPos() によってリフレッシュされると、状況がその行に対して新しい状況に変更されます。

Db2 ODBC は、引き続き照会の述部を満たす場合、更新された行を可視にします。 したがって、 SQLBulkOperations() または SQLSetPos() の場合、 Db2 ODBC は SQL_ROW_UPDATED を示し、行は再取得時に表示される可能性があります。 ただし、Db2 ODBC は、最終フェッチ以後の値の変更を検出できません。 フェッチに対して SQL_SUCCESS を戻します。

SQL_ROW_DELETED この結果セットからの最終フェッチ以後、行は削除されました。

Db2 ODBC は、削除された行を両方向スクロール・カーソルの結果セットで可視にしないため、この値を戻しません。

SQL_ROW_NOROW 行セットが結果セットの終りに重なり合い、行状況配列の対応エレメントに相当する行が戻されませんでした。