カーソル変数は、クエリの結果セットを指すポインターを保持します。静的カーソルとは異なり、カーソル変数は単一のクエリに固定されず、同じカーソル変数を複数回開くことができます。そのたびに異なるクエリを指定できます。
仕組み
カーソル変数にはデータそのものではなく、結果セットへのポインターが含まれます。OPEN FOR 文を実行すると、そのクエリから新しい結果セットが生成され、カーソル変数を通じてアクセス可能になります。カーソル変数はポインターであるため、別のクエリで再度開くことで、異なる結果セットに再割り当てできます。
これは、1 つのクエリに固定され、異なるクエリで再利用できない静的カーソルとは対照的です。
サブプログラムでの REF CURSOR の使用
REF CURSOR 型は、ストアドプロシージャや関数のパラメーターとして受け渡し可能です。また、関数の戻り値の型としても REF CURSOR 型を指定できます。
これにより、カーソル操作を個別のプログラム単位に分散でき、カーソル変数をプログラム間で受け渡して、カーソル関連のロジックをモジュール化できます。