次の方法で共有


カーソルを使用する方法 (ODBC)

カーソルを使用するには

  1. SQLSetStmtAttr を呼び出して、目的のカーソル属性を設定します。

    SQL_ATTR_CURSOR_TYPE および SQL_ATTR_CONCURRENCY 属性を設定します (これは推奨オプションです)。

    または

    SQL_CURSOR_SCROLLABLE および SQL_CURSOR_SENSITIVITY 属性を設定します。

  2. SQLSetStmtAttr を呼び出して、SQL_ATTR_ROW_ARRAY_SIZE 属性を使用して行セットのサイズを設定します。

  3. WHERE CURRENT OF 句を使用して位置指定更新を実行する場合は、SQLSetCursorName を呼び出して、カーソル名を設定することもできます。

  4. SQL ステートメントを実行します。

  5. WHERE CURRENT OF 句を使用して位置指定更新を実行する場合、手順 3. で SQLSetCursorName を使用してカーソル名を指定していなかったときは、SQLGetCursorName を呼び出してカーソル名を取得することもできます。

  6. SQLNumResultCols を呼び出して、行セット内の列数 (C) を取得します。

    列方向のバインドを使用します。

    - または -

    行方向のバインドを使用します。

  7. 必要に応じてカーソルから行セットをフェッチします。

  8. SQLMoreResults を呼び出して、別の結果セットが使用可能かどうかを判断します。

    • SQL_SUCCESS が返された場合は、別の結果セットを使用できます。

    • SQL_NO_DATA が返された場合は、他に使用できる結果セットはありません。

    • SQL_SUCCESS_WITH_INFO または SQL_ERROR が返された場合は、SQLGetDiagRec を呼び出して、PRINT ステートメントまたは RAISERROR ステートメントからの出力が使用可能かどうかを確認します。

    バインドされたステートメントのパラメータが出力パラメータまたはストアド プロシージャの戻り値に使用されている場合は、バインドされたパラメータのバッファでデータを使用できるようになります。

    バインドされたパラメータが使用される場合は、SQLExecute または SQLExecDirect への各呼び出しで、SQL ステートメントが S 回実行されます。S は、バインドされたパラメータの配列内にある要素数です。つまり、処理する結果のセットが S 個あることを意味します。これらの結果の各セットには、結果セット、出力パラメータ、および通常 SQL ステートメントの 1 回の実行で返されるリターン コードがすべて含まれます。

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

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

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

    手順 9. で、部分的に処理された結果セットで SQLMoreResults を呼び出すと、残りの結果セットがクリアされます。SQLCloseCursor を呼び出してクリアする方法もあります。

    使用するカーソルの種類を制御するには、SQL_ATTR_CURSOR_TYPE と SQL_ATTR_CONCURRENCY を設定するか、SQL_ATTR_CURSOR_SENSITIVITY と SQL_ATTR_CURSOR_SCROLLABLE を設定します。カーソルの動作を指定するこの 2 つの方法を組み合わせて実行しないでください。