Re: RETURNS TABLE function returns nothingness

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: RETURNS TABLE function returns nothingness
Дата
Msg-id a6afd8ab-7be4-4814-de0a-a7ba3d02de1c@aklaver.com
обсуждение исходный текст
Ответ на Re: RETURNS TABLE function returns nothingness  (Alexander Farber <alexander.farber@gmail.com>)
Список pgsql-general
On 09/02/2016 10:35 AM, Alexander Farber wrote:
> If I'd like to always return exactly 1 row -
> why wouldn't just RETURN work?
> (That's what I kept trying)

Because you are using RETURNS TABLE. Postgres(plpgsql) has no way of
knowing what number of rows you are going to return.

>
> On Fri, Sep 2, 2016 at 7:27 PM, Pavel Stehule <pavel.stehule@gmail.com
> <mailto:pavel.stehule@gmail.com>> wrote:
>
>
>
>     2016-09-02 19:21 GMT+02:00 Alexander Farber
>     <alexander.farber@gmail.com <mailto:alexander.farber@gmail.com>>:
>
>          why doesn't this simple test function return a row with 42,
>         NULL values:
>
>             CREATE OR REPLACE FUNCTION words_merge_users_2(
>                             IN in_users jsonb,
>                             IN in_ip inet
>                     ) RETURNS TABLE (
>                             out_uid integer,
>                             out_banned varchar
>                     ) AS
>             $func$
>             DECLARE
>                     _user          jsonb;
>                     _uids          integer[];
>                     _created       timestamptz;
>                     _vip           timestamptz;
>                     _grand         timestamptz;
>                     _banned_until  timestamptz;
>                     _banned_reason varchar;
>             BEGIN
>                     out_uid := 42;
>             END
>             $func$ LANGUAGE plpgsql;
>
>
>         Here I call it at PostgreSQL 9.5.4 prompt in MacOS:
>
>             # select * from
>
words_merge_users_2('[{"given":"Abcde","social":1,"auth":"07f0254f5e55413dec7f32c8ef4ee5d3","stamp":1470237061,"female":0,"sid":"11111"}]
>                               '::jsonb, '1.1.1.1'::inet);
>              out_uid | out_banned
>             ---------+------------
>             (0 rows)
>
>
>         Thank you (I am probably missing something very obvious)
>
>
>     There is not RETURN NEXT statement - so output is zero rows.
>


--
Adrian Klaver
adrian.klaver@aklaver.com


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

Предыдущее
От: Alexander Farber
Дата:
Сообщение: Re: RETURNS TABLE function returns nothingness
Следующее
От: Tom Lane
Дата:
Сообщение: Re: RETURNS TABLE function returns nothingness