カーソル (データベース)

データベースにおけるカーソル（）は、一連のデータに順にアクセスする際の検索条件および「現在位置」を保持するデータ要素である。
概要.
一般にデータベースは、同じ種類のデータを数多く蓄積しており、利用者が求めるデータも1件だけではなく複数件になる可能性がある。このようなケースは、カーソルを使って以下のようにイテレータの要領で実現できる。
システムによっては5において、次のデータに進む以外に、ひとつ前のデータに戻ることも許している。
カーソルを使う理由の一つとして、クエリの結果が多数の行を持つことによる
メモリのオーバーランを防ぐことが挙げられる。PL/pgSQLではメモリ問題を引き起こさないようにforループが内部で自動的に
カーソルを用いるため、この心配がない。
具体例.
SQL.
関係データベース用の問い合わせ言語として広く使われているSQLでは、カーソルを用いたアクセスのために一連のステートメントを提供している。「codice_1」でカーソルを宣言し、「codice_2」でカーソル位置のデータを取得するとともに次のデータに進む。データを変更する「codice_3」や削除する「codice_4」は、「codice_5」を指定することで、カーソル位置のデータを操作できる。使用後は「codice_6」で解放する。具体的な文法はSQL#カーソル定義・操作を参照。
ODBC.
C言語プログラムからSQLを使ってデータベースにアクセスするためのライブラリのひとつとしてODBCがある。ODBCはMicrosoft Windowsで広まった後、業界標準のSQL/CLIやJDBCのベースとなった。
カーソル操作に係るSQLステートメントには、以下のように個別のODBC関数が対応している。
ODBCでは、アプリケーションプログラムがカーソルを直接指定することは、ほとんどない。上記の関数はいずれも「ステートメントハンドル」（）を引数としており、このハンドルが指し示すデータ構造の中にカーソルも含まれているという扱いになる。すなわち、ステートメントハンドルがイテレータの役割を果たしている。
dbm.
dbmは関係データベースより単純な、キーと値の対応だけからなるデータベース機能を提供する。ここでもデータベース上の「現在位置」を指し示すために「カーソル」の語が使われている。