静的カーソル (データベース エンジン)

静的カーソルを開くと、そのカーソルの完全な結果セットが tempdb に作成されます。静的カーソルは常に、カーソルを開いた時点の結果セットの状態を表示します。

このカーソルは、結果セットのメンバシップに影響を与えるデータベース内の変更や、結果セットを構成する行の列内の値に対する変更を反映しません。静的カーソルを開いた後にデータベースに新しい行が挿入されると、カーソルの SELECT ステートメントの検索条件に一致していても、静的カーソルにそれらの行は表示されません。結果セットを構成する行が他のユーザーによって更新された場合、その新しいデータ値は静的カーソルに表示されません。静的カーソルを開いた後にデータベースから削除された行は、静的カーソルに表示されます。UPDATE、INSERT、または DELETE による操作は、静的カーソルを閉じてから再度開かない限り、静的カーソルに反映されません。これは、その静的カーソルを開いたのと同じ接続を使用して変更を行った場合でも同様です。

SQL Server の静的カーソルは常に読み取り専用です。

静的カーソルの結果セットは tempdb の作業テーブルに格納されるので、結果セット内の行のサイズを SQL Server テーブルの最大行サイズよりも大きくすることはできません。

Transact-SQL では、静的カーソルは非反映型カーソルとも呼ばれます。一部のデータベース API ではスナップショット カーソルとも呼びます。