読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

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

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;