我有一个简单的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