fetch - カーソルからインスタンスを取り出します
fetch [ (forward | backward) ] [ ( number | all) ] [in cursor_name]
ユーザは fetch でcursor_nameという名前のカーソルからインスタンスを取り出すことができます。取り出すインスタンスの数はnumberで指定します。もしカーソルに残っているインスタンスの数がnumberよりも少なければ、その入手できる数だけが取り出されます。number のところにキーワードallを代わりに置くことで、カーソルに残っているすべてのインスタンスを取り出すことになります。インスタンスは前方(forward)と後方(backward)の両方向に取り出すことができます。デフォルトの方向は前方(forward)です。
Postgres ではカーソルのデータを更新することはサポートされていません。なぜなら、通常マップしているカーソルの更新を基本クラスに戻すことはVIEW表の更新と同じく不可能だからです。したがって、ユーザはデータを更新するのに明示的な置換えのコマンドを発行しなくてはなりません。
カーソルはbegin(l) とcommit(l) でマークされたトランザクションブロック内でのみ使うことができます。なぜなら、カーソルの持っているデータは複数のユーザの問い合わせに及ぶからです。
--
-- カーソルをセットアップして使います
--
begin work;
declare mycursor cursor for
select * from pg-user;
--
-- FOOというカーソルにあるインスタンスをすべて取り出します
--
fetch all in FOO;
--
-- FOO というカーソルにあるインスタンスを 5つ後方に取り出します
--
fetch backward 5 in FOO;
--
-- カーソルを閉じます。
--
close foo;
commit;