postgresql函数:Final语句返回bigint而不是整数

时间:2012-05-12 12:32:34

标签: sql postgresql plpgsql

我正在使用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而不是整数

我不明白错误信息,特别是因为我期待一个RECORD(井表)类型回来。

导致错误的原因是什么,我该如何解决?

[[编辑]]

我按照评论中的建议将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"

1 个答案:

答案 0 :(得分:1)

编辑后,您现在收到不同的错误。您应该获取此新错误,因为您明确将第1列强制转换为int并将其声明为bigint。我的猜测是,col5col6table_foo的原始问题是bigint