カーソルを使用する方法 (ODBC)
カーソルを使用するには
SQLSetStmtAttr を呼び出して、目的のカーソル属性を設定します。
SQL_ATTR_CURSOR_TYPE および SQL_ATTR_CONCURRENCY 属性を設定します (これは推奨オプションです)。
または
SQL_CURSOR_SCROLLABLE および SQL_CURSOR_SENSITIVITY 属性を設定します。
SQLSetStmtAttr を呼び出して、SQL_ATTR_ROW_ARRAY_SIZE 属性を使用して行セットのサイズを設定します。
WHERE CURRENT OF 句を使用して位置指定更新を実行する場合は、SQLSetCursorName を呼び出して、カーソル名を設定することもできます。
SQL ステートメントを実行します。
WHERE CURRENT OF 句を使用して位置指定更新を実行する場合、手順 3. で SQLSetCursorName を使用してカーソル名を指定していなかったときは、SQLGetCursorName を呼び出してカーソル名を取得することもできます。
SQLNumResultCols を呼び出して、行セット内の列数 (C) を取得します。
列方向のバインドを使用します。
- または -
行方向のバインドを使用します。
必要に応じてカーソルから行セットをフェッチします。
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 を呼び出し、バインドされた列バッファを解放します。
別の結果セットが使用できる場合は、手順 6. に進みます。
手順 9. で、部分的に処理された結果セットで SQLMoreResults を呼び出すと、残りの結果セットがクリアされます。SQLCloseCursor を呼び出してクリアする方法もあります。
使用するカーソルの種類を制御するには、SQL_ATTR_CURSOR_TYPE と SQL_ATTR_CONCURRENCY を設定するか、SQL_ATTR_CURSOR_SENSITIVITY と SQL_ATTR_CURSOR_SCROLLABLE を設定します。カーソルの動作を指定するこの 2 つの方法を組み合わせて実行しないでください。