У меня есть такая функция:
CREATE OR REPLACE FUNCTION get_request
(IN p_id TEXT,
OUT c_request REFCURSOR)
AS
$BODY$
BEGIN
DECLARE
cur_1 CURSOR FOR select id, title, doc_url, icon_url
from request_attachments
where request_attachments.id = requests.id;
cur_2 CURSOR FOR select users.id user_id,
users.name user_name,
users.email user_email,
users.picture_url user_picture,
request_comments.ts,
request_comments."comment"
from request_comments, users
where request_comments.id = p_id and request_comments.user_id = users.id
order by request_comments.id desc, request_comments.ts desc;
BEGIN
open c_request for
select requests.center_id,
cur_1 attachments,
cur_2 comments
from requests
where id = p_id;
END;
END;
$BODY$
LANGUAGE plpgsql;
И я хотел бы получать значения из курсоров, которые определены внутри курсора c_request в этой функции. Я написал примерно так:
c_kur = get_request('some id here');
loop
fetch c_kur into r_kur;
IF NOT FOUND THEN EXIT; END IF;
c_kur2 = r_kur.cur_1;
loop
fetch c_kur2 into r_kur2;
IF NOT FOUND THEN EXIT; END IF;
raise info 'user_id: %, comment: %', r_kur2.user_id, r_kur2."comment"; --THIS IS WHERE I WANT TO SEE THOSE VALUES
end loop;
end loop;
close c_kur;
Но вроде не работает. Как получить значения cur_1 и cur_2 из этой функции во вложенном l oop, как указано выше?
Я получаю эту ошибку:
NOTICE: cursor "cur_1" does not exist 34000