加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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和更新版本检测此类冲突.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读