PostgreSQL函数无法正常工作

前端之家收集整理的这篇文章主要介绍了PostgreSQL函数无法正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的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和更新版本检测此类冲突.

猜你在找的Postgre SQL相关文章