sql - postgresql 函数 : Final statement returns bigint instead of integer

标签 sql postgresql plpgsql

我正在使用 PostgreSQL ver 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 时,出现以下错误:

Final statement returns bigint instead of integer

我不明白错误消息,特别是因为我期待 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 列转换为 int 并将其声明为 bigint。我的猜测是你原来的问题是 col5table_foo 中的 col6 是一个 bigint

关于sql - postgresql 函数 : Final statement returns bigint instead of integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10563763/

相关文章:

sql - 在 Delphi 中显示 SQL 查询的进度

sql - 仅当满足特定条件时才执行插入语句

sql - Postgres 动态查询函数

postgresql - PL/PQSQL 存储过程 : What is the difference between this 2 type of approaches?

postgresql - 根据 plpgsql 中传递的给定表动态定义返回行类型?

sql - 为什么更新触发器在 SQL Server 中进行舍入?

mysql - 将列上的行分组并展平其他列

sql - 为什么 SQL Server 死锁受害者错误 (1205) 会结束其所有事务?

PostgreSQL。串联的奇怪行为

sql - 如何通过连接 PostgreSQL 中的两个表来创建 View ?