plpgsql SET OF functions in field list of select

Поиск
Список
Период
Сортировка
От falcon
Тема plpgsql SET OF functions in field list of select
Дата
Msg-id 13210041384.20050505114548@intercable.ru
обсуждение исходный текст
Список pgsql-hackers
Hello.

Why pgplsql setof ... function cannot be used in field list of select?
It is possible to use C functions, plperl functions and sql functions,
but pgplsql returns:

ERROR:  set-valued function called in context that cannot accept a set
CONTEXT:  PL/pgSQL function "my_gen_ser" line 6 at return next

One can use sql function wrapper like this:

create or replace function my_gen_ser(int,int) returns setof int as '
declare  i int;
begin  i:=$1;  while i<=$2 loop     return next i;     i:=i+1;  end loop;  return;
end;
'
language plpgsql immutable;

/*
select t,my_gen_ser(t,t+t) from generate_series(2,5) as t;
fails with
ERROR:  set-valued function called in context that cannot accept a set
CONTEXT:  PL/pgSQL function "my_gen_ser" line 6 at return next
*/

create or replace function get_setint(int,int) returns setof int as '       select * from my_gen_ser($1,$2)
'
language sql immutable;

/* but this works good */
select t,get_setint(t,t+t) from generate_series(2,5) as t;

But I think it's awful, don't you?

Sokolov Yura  mailto:falcon@intercable.ru




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

Предыдущее
От: Mitch Pirtle
Дата:
Сообщение: Re: [OT] Re: [pgsql-advocacy] Increased company involvement
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Views, views, views! (long)