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 по дате отправления: