次の方法で共有


結果を処理する方法 (ODBC)

結果を処理するには

  1. 結果セットの情報を取得します。

  2. バインドされた列が使用されている場合は、バインド先の列ごとに SQLBindCol を呼び出して、プログラム バッファを列にバインドします。

  3. 結果セット内の各行に対して次の操作を行います。

    • SQLFetch を呼び出して次の行を取得します。

    • バインドされた列が使用されている場合は、バインドされた列のバッファ内で現在使用可能なデータを使用します。

    • バインドされていない列が使用されている場合は、SQLGetData を 1 回以上呼び出して、バインドされている最後の列の後に、バインドされていない列のデータを取得します。SQLGetData への呼び出しは、列番号の昇順に行う必要があります。

    • SQLGetData を複数回呼び出して、text または image 列からデータを取得します。

  4. 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 回の実行で返されるリターン コードがすべて含まれます。

    注意

    結果セットに計算行が含まれている場合、各計算行は個々の結果セットとして使用できるようになります。これらの計算結果セットは標準行内に点在し、標準行は複数の結果セットに分割されます。

  5. 必要に応じて、SQL_UNBIND を使用して SQLFreeStmt を呼び出し、バインドされた列バッファを解放します。

  6. 別の結果セットが使用できる場合は、手順 1. に進みます。

注意

SQLFetch によって SQL_NO_DATA が返される前に結果セットの処理をキャンセルするには、SQLCloseCursor を呼び出します。

関連項目

その他の技術情報