Har du virkelig brug for den eksplicitte markør? Hvis du har brug for iteration over dynamisk SQL, så kan du bruge FOR IN EXECUTE
. Det er loop over implicit (intern) markør for dynamisk SQL
FOR db_rec IN EXECUTE v_sql_dynamic
LOOP
..
END LOOP
En lille smule mere kompleks løsning er beskrevet i dokumentation
- 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 $$;
Med denne type markør kan du ikke bruge FOR IN