PostgreSQL函数无法正常工作
发布时间:2020-12-13 15:52:02 所属栏目:百科 来源:网络整理
导读:我有一个简单的PostgreSQL函数..如下所示 CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS 'BEGIN OPEN $1 FOR SELECT col FROM test WHERE cola = 1; RETURN $1;END;' LANGUAGE plpgsql; 问题是当我运行以下sql时,说我得到10行 SELECT col FROM t
我有一个简单的PostgreSQL函数..如下所示
CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS ' BEGIN OPEN $1 FOR SELECT col FROM test WHERE cola = 1; RETURN $1; END; ' LANGUAGE plpgsql; 问题是当我运行以下sql时,说我得到10行 SELECT col FROM test WHERE cola = 1; 但是当我调用该函数时我得到0行,稍后在改变脚本之后我发现以下工作 CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS ' BEGIN OPEN $1 FOR SELECT col FROM test t WHERE t.cola = 1; RETURN $1; END; ' LANGUAGE plpgsql; 并返回必要的行. 我知道这不是严格的SQL问题,但这是一个众所周知的PostgreSQL问题还是可能是一个bug? 这里需要注意的是,我有许多名为’cola’的列表,是因为PostgreSQL配置问题还是存在问题? 32位Windows版本的PostgreSQL v8.3 解决方法
你的问题很模糊,所以我在这里猜测.你有没有机会,你的功能中已经有一个名为“可乐”的变量?当函数级变量与列名冲突时,变量优先,最终会给查询带来意想不到的结果.
解决方案是重命名函数中的变量. 这是PL / pgSQL中非常常见的陷阱. PostgreSQL 9.0和更新版本检测此类冲突. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |