Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous
Дата
Msg-id 8f65c2fa-b814-d139-f1b3-e38d8588fd2e@aklaver.com
обсуждение исходный текст
Ответ на Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous  (Alexander Farber <alexander.farber@gmail.com>)
Ответы Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous  (Sridhar N Bamandlapally <sridhar.bn1@gmail.com>)
Список pgsql-general
On 08/10/2016 01:14 PM, Alexander Farber wrote:
> No, actually both variants work for me right now at 9.5.3 on Mac -

I thought the question you where asking was:

"Where does RETURN NEXT EXPRESSION work, on 9.6?"

In the examples below you are not doing that.

Inline comments below.

>
> On Wed, Aug 10, 2016 at 8:31 PM, Adrian Klaver
> <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>> wrote:
>
>
>     Given what you are doing, RETURN TABLE it will not work there for
>     the same reason it does not work in 9.5:
>
>     https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING
>     <https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING>
>
>     "If you declared the function with output parameters, write just
>     RETURN NEXT with no expression. On each execution, the current
>     values of the output parameter variable(s) will be saved for
>     eventual return as a row of the result. Note that you must declare
>     the function as returning SETOF record when there are multiple
>     output parameters, or SETOF sometype when there is just one output
>     parameter of type sometype, in order to create a set-returning
>     function with output parameters."
>
>
> Either:
>
>     CREATE OR REPLACE FUNCTION words_check_words(
>             IN in_uid integer,
>             IN in_gid integer,
>             IN in_tiles jsonb
>             OUT out_word varchar,
>             OUT out_score integer
>             ) RETURNS SETOF RECORD AS
>     $func$
>
>
> Or:
>
>     CREATE OR REPLACE FUNCTION words_check_words(
>             IN in_uid integer,
>             IN in_gid integer,
>             IN in_tiles jsonb
>             ) RETURNS TABLE (out_word varchar, out_score integer) AS
>     $func$
>
>
> And then I assign values to the variables and call RETURN NEXT:
>
>       out_word := ... ;
>       out_score := ... ;
>       RETURN NEXT;

RETURN SETOF and RETURN TABLE are comparable, as you found out:

https://www.postgresql.org/docs/9.5/static/plpgsql-overview.html#PLPGSQL-ARGS-RESULTS

"PL/pgSQL functions can also be declared with output parameters in place
of an explicit specification of the return type. This does not add any
fundamental capability to the language, but it is often convenient,
especially for returning multiple values. The RETURNS TABLE notation can
also be used in place of RETURNS SETOF."


>
> Regards
> Alex


--
Adrian Klaver
adrian.klaver@aklaver.com


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

Предыдущее
От: Alexander Farber
Дата:
Сообщение: Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous
Следующее
От: Jim Nasby
Дата:
Сообщение: plpython.h not installed in 9.4