gpt4 book ai didi

sql - PostgreSQL 函数不能正常工作

转载 作者:行者123 更新时间:2023-11-29 11:37:12 25 4
gpt4 key购买 nike

我有一个简单的 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 问题还是可能是一个错误?

这里需要注意的一点是,我有许多表的列名为“cola”,是这个原因还是存在 PostgreSQL 配置问题?

32 位 Windows 版本的 PostgreSQL v8.3

最佳答案

您的问题相当含糊,所以我是在暗中猜测。你有没有可能在你的函数中已经有一个名为“cola”的变量?当函数级变量与列名冲突时,变量优先,您最终会得到完全出乎意料的查询结果。

解决方案是重命名函数中的变量。

这是 PL/pgSQL 中一个非常常见的陷阱。 PostgreSQL 9.0 和更新版本检测到此类冲突。

关于sql - PostgreSQL 函数不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com