結果の処理 (ODBC)
結果を処理するには
結果セットの情報を取得します。
バインドされた列が使用されている場合は、バインド先の列ごとに SQLBindCol を呼び出して、プログラム バッファーを列にバインドします。
結果セット内の各行に対して次の操作を行います。
SQLFetch を呼び出して次の行を取得します。
バインドされた列が使用されている場合は、バインドされた列のバッファー内で現在使用可能なデータを使用します。
バインドされていない列が使用されている場合は、SQLGetData を 1 回以上呼び出して、バインドされている最後の列の後に、バインドされていない列のデータを取得します。 SQLGetData への呼び出しは、列番号の昇順に行う必要があります。
SQLGetData を複数回呼び出して、text または image 列からデータを取得します。
SQLFetch が SQL_NO_DATA を返すことによって結果セットの終了を示したら、SQLMoreResults を呼び出して、使用可能な結果セットが他にあるかどうかを確認します。
SQL_SUCCESS が返された場合は、他の結果セットを使用できます。
SQL_NO_DATA が返された場合は、他に使用できる結果セットはありません。
SQL_SUCCESS_WITH_INFO または SQL_ERROR が返された場合は、SQLGetDiagRec を呼び出して、PRINT ステートメントまたは RAISERROR ステートメントからの出力が使用可能かどうかを確認します。
バインドされたステートメントのパラメーターが出力パラメーターまたはストアド プロシージャの戻り値に使用されている場合は、バインドされたパラメーターのバッファーで現在使用可能なデータを使用します。 バインドされたパラメーターが使用される場合は、SQLExecute または SQLExecDirect への各呼び出しで、SQL ステートメントが S 回実行されます。S は、バインドされたパラメーターの配列内にある要素の数です。 つまり、処理する結果のセットが S 個あることを意味します。これらの結果の各セットには、結果セット、出力パラメーター、および通常 SQL ステートメントの 1 回の実行で返されるリターン コードがすべて含まれます。
注 結果セットに計算行が含まれている場合、各計算行は個々の結果セットとして使用できるようになります。 これらの計算結果セットは標準行内に点在し、標準行は複数の結果セットに分割されます。
必要に応じて、SQL_UNBIND を使用して SQLFreeStmt を呼び出し、バインドされた列バッファーを解放します。
別の結果セットが使用できる場合は、手順 1. に進みます。
注 |
---|
SQLFetch によって SQL_NO_DATA が返される前に結果セットの処理を取り消すには、SQLCloseCursor を呼び出します。 |