web-dev-qa-db-ja.com

「カーソル」とは何ですか?

私はデータベースの概念に不慣れで、カーソルとは何かを説明しようとするいくつかの情報源を見つけましたが、それらが何を意味するのか理解できません。誰かが非常に基本的な方法でカーソルとは何か、そしてそれがデータベース内で何をするのかを説明して、新人が理解できるようにすることはできますか?みんなありがとう。

2
Enthusiast

カーソルは基本的に、独自の状態を維持し(基本的にどの行が「現在」であるかを記憶している)、現在の行を操作できるクエリからの具体化された結果セットです。

カーソルのライフサイクルは、多かれ少なかれ次のようになります。

  1. カーソルを開きます。この時点で、カーソルを定義するクエリが実行されます。
  2. カーソルを置きます。カーソルを開いた後、結果セットの最初の行の前にカーソルが置かれるため、カーソルを最初の行に移動する必要があります。最も単純なケースでは、カーソルを「次の」行に移動することしかできませんが、カーソルを開くために使用するパラメータに応じて、結果セットの「前の」行または任意の行に移動することもできます。特定のDBMSがこれらの種類のカーソルをサポートしているかどうか。
  3. カーソルからフェッチします。この操作は、「現在の」行の列の値をアプリケーション変数に割り当てます。
  4. 特定のカーソルでそのような操作が許可されている場合は、現在の行の列を更新するか、現在の行を削除します。
  5. カーソルを閉じます。結果セットで使用されるすべてのリソースは、この時点で解放されます。

通常、ステップ2〜4はアプリケーションプログラム(またはストアドプロシージャ)ループで実行され、結果セットの各レコードを読み取り、必要に応じてそれを使用して何かを実行できます。

3
mustaccio