Использование PostgreSQL Я сохраняю функцию, используя следующую структуру:
create or replace function myfunc() returns refcursor as $$
declare rc refcursor := 'mycursor';
-- ...
begin;
-- ...
open rc for select ...;
return rc;
end; $$ language plpgsql;
Возвращает курсор, который я использую в обязательной транзакции.Который я использую так:
begin;
select myfunc();
fetch all in mycursor;
close mycursor;
commit;
Но в большинстве примеров и учебных пособий утверждение close mycursor;
просто опускается.Я знаю, что вам нужно закрыть его при внутреннем использовании в функции, но когда он возвращается, может быть commit;
автоматически закрывает все открытые курсоры?Итак, действительно ли необходимо закрывать курсор?
Не знаете, как проверить, открыт ли он после commit;
, поскольку курсор больше не находится в области видимости.