Share via


結果の処理 - 処理結果

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

ODBC アプリケーションでの結果の処理では、まず結果セットの特性を判断してから、 SQLBindCol または SQLGetData を使用してプログラム変数にデータを取得します。

結果を処理するには

  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 を呼び出します。

参照

結果セットの情報の取得 (ODBC)