7

この ERROR: column reference "person" is ambiguous が発生し続けます。

TABLE (person integer) を返す必要があります。SETOF 整数を使用すると正常に動作しますが、この場合は動作しません。私の他の関数 recurse() は、完全に整数のセットを返します。

CREATE OR REPLACE FUNCTION try(_group text) RETURNS TABLE (person integer) AS $$ 
DECLARE
     _init_id integer;
     _record integer;
BEGIN
     SELECT id INTO _init_id FROM egroups WHERE name = _group;

    FOR _record in SELECT person FROM egroupdata WHERE egroup IN (SELECT recurse(_init_id))
    LOOP
        RETURN NEXT;
    END LOOP;

END;
$$ language plpgsql stable;
4

1 に答える 1

27

あいまいな列参照は、同じ名前の使用可能な列が複数あるために発生します。この場合、テーブルを返すのは癖だと思います。クエリを次のように変更してみてください。

SELECT egroupdata.person FROM egroupdata WHERE egroup IN (SELECT recurse(_init_id))

これにより、列参照が明確になります。

于 2012-05-25T08:39:49.353 に答える