我正在使用 PostgreSQL 8.4 版并编写了以下自定义分组函数:
CREATE OR REPLACE FUNCTION custom_group(integer)
RETURNS TABLE (
grp INTEGER,
entry_date DATE,
col1 REAL,
col2 REAL,
col3 REAL,
col4 REAL,
col5 INTEGER,
col6 INTEGER) AS
$BODY$
SELECT ceil(rank() OVER (ORDER BY entry_date) / $1)::int as grp
,entry_date, col1, col2, col3, col4, col5, col6
FROM table_foo
ORDER BY 1;
$BODY$ LANGUAGE SQL;
当我尝试将函数导入使用 psql 时,出现以下错误:
最终语句返回 bigint 而不是整数
我不理解错误消息,特别是因为我期待返回记录(井表)类型。
是什么导致了错误,我该如何解决?
[[编辑]]
我按照评论中的建议将 grp 数据类型更改为 BIGINT,但是我得到了同样的错误。细节:
ERROR: return type mismatch in function declared to return record
DETAIL: Final statement returns integer instead of bigint at column 1.
CONTEXT: SQL function "custom_group"