YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

ストアドプロシージャ カーソルの利用

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;