動的SQLでカーソルオープン

SET SERVEROUTPUT ON

DECLARE

	--カーソルタイプの定義
	TYPE typeMyCursor    IS REF CURSOR;

	--カーソル変数の定義
	curHoge		typeMyCursor;

	--INTOで受け取る変数
	WK_MONEY		Hoge.money%TYPE;

	--SQL生成用
	WK_SQL			VARCHAR(2000);


BEGIN

	--動的SQL文の作成
	WK_SQL	:=	'SELECT money  FROM Hoge';

	--カーソルオープン
	OPEN curHoge FOR WK_SQL;
	LOOP
		FETCH curHoge INTO WK_MONEY;
		EXIT WHEN curHoge%NOTFOUND;

		DBMS_OUTPUT.PUT_LINE(WK_MONEY);

	END LOOP;
	CLOSE curHoge;

END;
/


「IS REF CURSOR」でタイプを宣言しておくこと&オープン時にFor句でSQL文を指定することがポイント。