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