Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous
| От | Adrian Klaver |
|---|---|
| Тема | Re: RETURNS TABLE function: ERROR: column reference "word" is ambiguous |
| Дата | |
| Msg-id | fce5d95d-e2e9-c1fd-984b-b8c88682cfa6@aklaver.com обсуждение |
| Ответ на | RETURNS TABLE function: ERROR: column reference "word" is ambiguous (Alexander Farber <alexander.farber@gmail.com>) |
| Список | pgsql-general |
On 08/10/2016 05:54 AM, Alexander Farber wrote:
> Good afternoon,
>
> In PostgreSQL 9.5.3 I have created a function (full source code at the
> bottom), which goes through an 15 x 15 varchar array and collects words
> played horizontally and vertically.
>
> I have declared the function as:
>
> CREATE OR REPLACE FUNCTION words_check_words(
> IN in_uid integer,
> IN in_gid integer,
> IN in_tiles jsonb)
> RETURNS TABLE(word varchar, score integer) AS
> $func$
> ................
> CREATE TEMPORARY TABLE _words (word varchar, score integer) ON
> COMMIT DROP;
> ...............
> SELECT word, max(score) as score FROM _words GROUP BY word;
> END
> $func$ LANGUAGE plpgsql;
>
> And when I call it as:
>
> select * from words_check_words(2, 1,
> '[{"col":11,"letter":"A","row":8,"value":1},{"col":11,"letter":"B","row":7,"value":3}]'::jsonb);
>
> then it fails with:
>
> ERROR: column reference "word" is ambiguous
> LINE 1: SELECT word, max(score) as score FROM _words GROUP BY word
> ^
> DETAIL: It could refer to either a PL/pgSQL variable or a table column.
>
> As I understand the "word" is used both by the RETURN TYPE and my TEMP
> TABLE.
>
> How to resolve this "naming conflict" best or maybe there is some better
> way like using some "internal" table implicitly created by the type
> declaration?
SELECT _words.word, max(score) as score FROM _words GROUP BY word;
>
> Thank you
> Alex
>
--
Adrian Klaver
adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: