Re: [BUGS] BUG #14463: refcursor cann't used with array or variadic parameter?

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: [BUGS] BUG #14463: refcursor cann't used with array or variadic parameter?
Дата
Msg-id CAFj8pRAO29VqqH13aWK1YPyRiL1VZvdS+uKzFB-S6S20ukgtug@mail.gmail.com
обсуждение исходный текст
Ответ на [BUGS] BUG #14463: refcursor cann't used with array or variadic parameter?  (digoal@126.com)
Ответы Re: [BUGS] BUG #14463: refcursor cann't used with array or variadic parameter?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Hi

It is not a bug - it is feature. PLpgSQL statements doesn't expect a expression on some places.


2016-12-13 16:25 GMT+01:00 <digoal@126.com>:
CREATE FUNCTION myfunc(variadic ref refcursor[]) RETURNS SETOF
refcursor AS $
begin
 open ref[1] for select * from pg_class;
 return next ref[1];
 open ref[2] for select * from pg_class;
 return next ref[2];
end;
$ lANGUAGE plpgsql;

There is a workaround

CREATE FUNCTION myfunc(variadic ref refcursor[]) RETURNS SETOF
refcursor AS $$ declare r refcursor;
begin r = ref[1];
 open r for select * from pg_class;
 return next ref[1]; r = ref[2];
 open r for select * from pg_class;
 return next ref[2];
end;
$$ lANGUAGE plpgsql;

Personally, I have not any idea what do you do. Maybe a C extension can works better for you - PLpgSQL is static strict language. When you use too dynamic code, the result can be hardly maintainable.

Regards

Pavel Stehule

В списке pgsql-bugs по дате отправления:

Предыдущее
От: digoal@126.com
Дата:
Сообщение: [BUGS] BUG #14463: refcursor cann't used with array or variadic parameter?
Следующее
От: Análise Sistema Ágile
Дата:
Сообщение: [BUGS] Problems about FUNCTIONS