FOR IN SELECT文やFOR IN EXECUTE文などでループを回しているその中でさらにループを回したいときがある。そういうときにFOR文でエラーが出ることがあるのでカーソルを利用してループを作成するといい。
OPEN cursor FOR SELECT ... or OPEN cursor FOR EXECUTE sql...
カーソルをオープンしたら今度は結果を取ってくる。(FETCH)
FETCH cursor INTO record | row;
最後はカーソルを閉じる。
CLOSE cursor;
以上の一連の例はたとえば下のような感じ。
OPEN cursor FOR SELECT * FROM table; LOOP FETCH cursor INTO record; EXIT WHEN NOT FOUND; RETURN NEXT record; END LOOP; CLOSE cursor;