カーソルの種類
ODBC では、Microsoft SQL Server と SQL Server Native Client ODBC ドライバーでサポートされる 4 種類のカーソルが定義されています。 これらのカーソルは結果セットへの変更を検出する機能が異なり、メモリや tempdb 内の領域など、カーソルが使用するリソースも異なります。 カーソルが行への変更を検出できるのは、変更が加えられた行の再フェッチを試みたときだけです。現在フェッチしている行への変更を、データ ソースからカーソルに通知する方法はありません。 カーソルを使用して行われなかった変更を検出する機能は、トランザクション分離レベルによって異なる場合があります。
次に SQL Server でサポートされる 4 種類の ODBC カーソルを示します。
順方向専用カーソルではスクロールがサポートされず、カーソルの最初から最後まで行を順番にフェッチする機能だけがサポートされます。
静的カーソルは、カーソルを開くと tempdb 内に構築されます。 静的カーソルは、常に、カーソルを開いた時点の結果セットを表示します。 データへの変更は反映されません。 SQL Server の静的カーソルは常に読み取り専用です。 静的サーバー カーソルは作業テーブルとして tempdb 内に構築されるので、カーソル結果セットのサイズが SQL Server で許可されている最大行サイズを超えることはできません。
キーセット ドリブン カーソルでは、カーソルを開くときに、結果セット内の行のメンバーシップと順序が固定されます。 非キー列の変更は、このカーソルを使用して表示されます。
動的カーソルは静的カーソルと対照的です。 動的カーソルでは、結果セット内の行に対するすべての変更が反映されます。 結果セット内の行のデータ値、順序、およびメンバーシップは、フェッチを実行するたびに変化する可能性があります。