II
CREATE OR REPLACE FUNCTION cc_test_ref_c(refcursor) RETURNS refcursor AS $$
BEGIN
OPEN $1 FOR SELECT * FROM generate_series(1, 10000);
RETURN $1;
END;
$$ LANGUAGE plpgsql;
DO $$
DECLARE
rec record;
i int;
cur refcursor;
cache refcursor[];
d int;
BEGIN
FOREACH i in ARRAY array[1,2,3,1,2,3]
loop
cur := cache[i];
if cur isnull then
cur := (select cc_test_ref_c(('cur-'||i)::refcursor ));
cache[i] := cur;
end if;
d := 0;
loop
fetch next from cur into rec;
exit when not found or d > 3;
d := d + 1;
RAISE NOTICE 'The current value [%] %', i, rec;
end loop;
end loop;
END $$;
Всем привет. Подскажите, пожалуйста на сколько это плохая идея, учитывая что максимум открытых курсоров будет 100