Вам редко нужно явно использовать курсоры в postgresql или pl / pgsql.То, что вы написали, выглядит подозрительно как конструкция цикла курсора SQL Server, и вам не нужно этого делать.Кроме того, вы можете использовать «PERFORM» вместо «EXECUTE» для запуска запроса и отклонения результатов: это позволит избежать повторного разбора запроса каждый раз (хотя он не может избежать разбора запроса dblink каждый раз).
Вы можете сделать что-то более похожее на это:
DECLARE
rec student%rowtype;
BEGIN
FOR rec IN SELECT * FROM student
LOOP
PERFORM dblink_exec('myconT',
'insert into temp_student values ('
|| quote_nullable(rec.fname) || ','
|| quote_nullable(rec.lname) || ','
|| quote_nullable(rec.mname) || ','
|| quote_nullable(rec.address) || ')');
END LOOP;
END;