YAMAGUCHI::weblog

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

ストアドプロシージャ FORループ

複数行の問い合わせ結果を扱いたい場合はFOR IN SELECT文やFOR IN EXECUTE文を用いればよい。

FOR record | row IN select_query LOOP
	statements
END LOOP;
FOR record | row IN EXECUTE sql LOOP
	statements
END LOOP;

statements内で結果を返したい場合はRETURNではなく、RETURN NEXTを使わなければいけない。たとえばこんな感じ。

FOR row_data IN SELECT * FROM table WHERE ticket_id= id LOOP
	IF row_data.value > 1000 THEN
		RETURN NEXT row_data;
	END IF;
END LOOP;