カーソル_(データベース)
[Wikipedia|▼Menu]

データベースにおけるカーソル(: cursor)は、一連のデータに順にアクセスする際の検索条件および「現在位置」を保持するデータ要素である。
概要

一般にデータベースは、同じ種類のデータを数多く蓄積しており、利用者が求めるデータも1件だけではなく複数件になる可能性がある。このようなケースは、カーソルを使って以下のようにイテレータの要領で実現できる。
利用者は検索条件やソート順序を指定してカーソルを定義する。

パラメータを利用している場合は値を決定し、データへのアクセスを開始する。

カーソル位置のデータを取得する。検索結果の終端なら7へ。

必要に応じてカーソル位置のデータを変更・削除する。

カーソルを「次のデータ」へと進める。

3から繰り返し。

繰り返しの終了後、カーソルを解放する。

システムによっては5において、次のデータに進む以外に、ひとつ前のデータに戻ることも許している。

カーソルを使う理由の一つとして、クエリの結果が多数の行を持つことによるメモリのオーバーランを防ぐことが挙げられる。PL/pgSQLではメモリ問題を引き起こさないようにforループが内部で自動的にカーソルを用いるため、この心配がない。
具体例
SQL

関係データベース用の問い合わせ言語として広く使われているSQLでは、カーソルを用いたアクセスのために一連のステートメントを提供している。「DECLARE CURSOR」でカーソルを宣言し、「FETCH」でカーソル位置のデータを取得するとともに次のデータに進む。データを変更する「UPDATE」や削除する「DELETE」は、「WHERE CURRENT OF カーソル名」を指定することで、カーソル位置のデータを操作できる。使用後は「CLOSE」で解放する。具体的な文法はSQL#カーソル定義・操作を参照。
ODBC

C言語プログラムからSQLを使ってデータベースにアクセスするためのライブラリのひとつとしてODBCがある。ODBCはMicrosoft Windowsで広まった後、業界標準のSQL/CLIJDBCのベースとなった。

カーソル操作に係るSQLステートメントには、以下のように個別のODBC関数が対応している。

ODBCにおけるカーソル操作ODBC関数対応するSQLステートメント
SQLPrepareDECLARE CURSOR
SQLExecuteOPEN
SQLFetchFETCH
SQLFreeStmtCLOSE

ODBCでは、アプリケーションプログラムがカーソルを直接指定することは、ほとんどない。上記の関数はいずれも「ステートメントハンドル」(Statement Handle)を引数としており[1]、このハンドルが指し示すデータ構造の中にカーソルも含まれているという扱いになる。すなわち、ステートメントハンドルがイテレータの役割を果たしている。
dbm

dbmは関係データベースより単純な、キーと値の対応だけからなるデータベース機能を提供する。ここでもデータベース上の「現在位置」を指し示すために「カーソル」の語が使われている[2]
注意点

カーソルは実行中の検索条件や現在位置を保持するために、メモリ容量などの資源を必要とする。カーソルの解放漏れは
メモリリークにつながる可能性がある。

標準SQL規格では、トランザクションを終了するとカーソルは破棄される仕様である。しかし、DBMSによっては破棄されずそのままデータにアクセスすることができる。標準SQL規格に準拠した使い方をするのであれば、トランザクション終了後はカーソルを破棄するべきである。

脚注^ Microsoft. “ ⇒ODBC Function Summary” (英語). 2008年6月7日閲覧。
^ JMプロジェクト. “ ⇒dbopen”. 2008年6月7日閲覧。










データベース管理システム


データモデル

関係モデル

データベース設計

正規化

参照整合性

関係代数

関係論理

データベース管理システム

関係データベース管理システム

オブジェクト関係データベース

分散データベース

トランザクション処理

概念
データベース

ACID

CRUD

3値論理NULL

候補キー

外部キー

主キー

スーパーキー

代理キー

オブジェクト

関係 ()

ビュー

トランザクション

ログ

トリガ

索引

ストアドプロシージャ

カーソル

分割

SQL

SELECT

INSERT

UPDATE

MERGE

DELETE

JOIN

CREATE

DROP

COMMIT

ROLLBACK

TRUNCATE

ALTER

WHERE

SAVEPOINT

構成要素

並行性制御

データ辞書

JDBC

ODBC

データベース言語

問い合わせ言語

クエリ最適化

クエリ実行計画


データベース製品
関係データベース管理システムの比較データベース接続クライアント カテゴリ


記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:10 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef