【发布时间】:2021-05-04 12:44:47
【问题描述】:
我在 PostgreSQL 中收到以下错误:
[42702] 错误:列引用“topicid”不明确详细信息:它 可以引用 PL/pgSQL 变量或表列。在哪里: PL/pgSQL function topics(integer) line 3 at RETURN QUERY
我理解这意味着存在同名的参数和表列。除了我看不到它在哪里,因为我唯一的参数是_typeid 而不是topicid。
这个函数到底哪里出了问题:
CREATE FUNCTION topics(_typeid integer DEFAULT NULL::integer)
RETURNS TABLE(topicid integer, typeid integer, topic character varying)
LANGUAGE plpgsql
AS
$$
BEGIN
RETURN QUERY SELECT
topicid
,typeid
,topic
FROM
topic
WHERE
_typeid IS NULL
OR
typeID = _typeid
ORDER BY
topic ASC;
END
$$;
如果我将它重构为只使用sql,那么它可以像这样正常工作:
CREATE FUNCTION topics(_typeid integer DEFAULT NULL::integer)
RETURNS TABLE(topicid integer, typeid integer, topic character varying)
LANGUAGE sql
AS
$$
SELECT
topicid
,typeid
,topic
FROM
topic
WHERE
_typeid IS NULL
OR
typeID = _typeid
ORDER BY
topic ASC;
$$;
【问题讨论】:
标签: postgresql plpgsql