データの「検索条件」と「現在地」を保持して、複数の検索結果を1件ずつ処理するための仕組み。

以下、カーソルの基本的な書き方。

DECLARE カーソル名 [ INSENSITIVE ] [ SCROLL ] CURSOR
   FOR { SELECT文 [ 更新可能性句 ] } | {準備された文} ;

・INSENSITIVE:カーソルを開いた後、カーソルの内容が固定されます。カーソルを開いている間、他のトランザクションによるデータの変更の影響は受けません。INSENSITIVE と指定できるのは、後で説明する読み取り専用カーソルに限定されます。
・SCROLL: FETCH 文の「方向」で NEXT 以外も指定することができるようになります。SCROLL を指定しない場合は、NEXT だけがサポートされます。これも、読み取り専用カーソルに限定されます。
・更新可能性句:そのカーソルが更新可能なのか、読み取り専用なのかを指定するものです。更新可能性句は次のように記述します。初期値は READ ONLY になっていますので、読み取り専用である場合は、明示的に指定する必要はありません。
OPEN カーソル名  ;

DECLARE 文で定義されたカーソルを開きます。カーソルを開くことにより、カーソルのデータを処理することができるようになります。
FETCH [ [ 方向 ] FROM ] カーソル名 INTO 変数リスト ;

「方向」は行を示すポインタがどこに移動した後に、行のデータを読み取るのかを指定するものです。「方向」の指定の仕方は、次の通りです。
CLOSE カーソル名 ;

カーソルを閉じることにより、カーソルに蓄えられていたクエリの結果集合が破棄されます。

参考