Re: PERFORM not working properly, please help..

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: PERFORM not working properly, please help..
Дата
Msg-id 162867791002181141y4d91142by2ce54d71502d3312@mail.gmail.com
обсуждение исходный текст
Ответ на PERFORM not working properly, please help..  (wilczarz1@op.pl)
Список pgsql-general
Hello

2010/2/18  <wilczarz1@op.pl>:
> I have a function A1 that returns setof records, and I use it in two ways:
> 1) from function A2, where I need results from A1
> 2) from function A3, where I don't need these results, all I need is to
> execute logic from A1
>
> Here ale very simple versions of my functions:
>
> CREATE OR REPLACE FUNCTION A1() RETURNS setof record AS $BODY$
> begin
>  -- some logic here
>  return query select col from tab;
> end;
> $BODY$ LANGUAGE 'plpgsql';
>
> CREATE OR REPLACE FUNCTION A2() RETURNS setof record AS $BODY$
> begin
>  -- some logic here
>  return query select * from A1() as dummy ( x double precision);
> end;
> $BODY$ LANGUAGE 'plpgsql';
>
> CREATE OR REPLACE FUNCTION A3() RETURNS VOID AS $BODY$
> begin
>  perform A1();
> end;
> $BODY$ LANGUAGE 'plpgsql';
>
> And here are my function calls:
> select * from A1() as(x double precision) --ok
> select * from A2() as(x double precision) --ok
> select * from A3(); --not ok, argh!
>

it is correct. Every function has own stack for result. There are not
some global stack. Perform just run function and doesn't copy inner
result's stack to outer result stack.

your A3 function have to be
begin
  return query select * from a1
  return;
end;

like a2 function

regards
Pavel Stehule
> The last one generates error "set-valued function called in context that
> cannot accept a set". Why doesn't PERFORM work here? Thanks for help..
>

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

Предыдущее
От: wilczarz1@op.pl
Дата:
Сообщение: PERFORM not working properly, please help..
Следующее
От: Raymond O'Donnell
Дата:
Сообщение: Re: PERFORM not working properly, please help..