明示カーソルが本当に必要ですか?動的SQLを反復処理する必要がある場合は、FOR IN EXECUTE
を使用できます。 。動的SQLの暗黙的な(内部)カーソルのループです
FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
..
END LOOP
もう少し複雑なソリューションについては、ドキュメント
で説明されています。 -OPEN FOR EXECUTE
:
do $$
declare r refcursor; rec record;
begin
open r for execute 'select * from pg_class';
fetch next from r into rec;
while found
loop
raise notice '%', rec;
fetch next from r into rec;
end loop;
close r;
end $$;
この種のカーソルでは、FOR IN
を使用することはできません。