Apakah Anda benar-benar membutuhkan kursor eksplisit? Jika Anda perlu mengulangi SQL dinamis, maka Anda dapat menggunakan FOR IN EXECUTE
. Ini adalah loop di atas kursor implisit (internal) untuk SQL dinamis
FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
..
END LOOP
Solusi yang sedikit lebih kompleks dijelaskan dalam dokumentasi
- 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 $$;
Dengan kursor seperti ini, Anda tidak dapat menggunakan FOR IN