#postgresql
#postgresql
Вопрос:
mainfunc() возвращает refcursor.
CREATE OR REPLACE FUNCTION public.mainfunc()
RETURNS refcursor
LANGUAGE 'plpgsql'
AS $BODY$
declare
ref1 refcursor;
BEGIN
ref1 =
OPEN ref1 FOR SELECT city, pincode FROM employees WHERE id = 1;
RETURN ref1;
end;
$BODY$
Ниже показана дочерняя функция, которая должна извлекаться из refcursor, возвращаемого из mainfunc() .
CREATE OR REPLACE FUNCTION secondfunc(ref1 refcursor)
RETURNS integer
LANGUAGE 'plpgsql'
AS $BODY$
declare
rec record;
sample integer;
ref1 refcursor;
begin
select * from mainFunc() ;
for rec in ref1
loop
fetch next from ref1 into rec;
exit when not found;
raise notice 'display %', rec.id;
end loop;
end;
$BODY$;
Комментарии:
1. Почему бы просто не объявить
mainfunc()
returns tables (...)
и не использоватьfor rec in select * from mainfunc()
во второй функции?2. Это пример кода, фактическая реализация должна извлекать refcursor из другой функции.