关于自定义聚合函数调用一部分类型不符的问题

我建立了下面的函数

  • 这个叫做ALL_ADD的函数的目的是要将一组real的数据加起来,跟SUM( )其实功能是一样的

CREATE OR REPLACE FUNCTION all_add_state(
    pre real,
    next real)
  RETURNS real AS
$BODY$
SELECT 
  CASE
    WHEN $2 IS NULL OR $2 = 0 THEN $1
    ELSE COALESCE($1,0) +$2
    END;
$BODY$
  LANGUAGE sql IMMUTABLE;

CREATE OR REPLACE FUNCTION all_add_final(real)
  RETURNS real AS
$BODY$
SELECT $1
$BODY$
  LANGUAGE sql IMMUTABLE;

CREATE AGGREGATE ALL_ADD(real)(
  SFUNC = all_add_state,
  STYPE = real,
  FINALFUNC = all_add_final,
  INITCOND = 0
);

然后run就可以成功建立一个名叫ALL_ADD的聚合函数,

但是在使用的时候遇到一点点问题

  • 我将一组名为price的数据传进去,提示类型不符(忘记error信息具体情况了,但意思就是不符),建议我转换类型。

我本来以为是我的函数写错了不能识别price,但是今天又考虑了一下,为什么不是参数错误呢?

  • 所以我又查看了price的属性,果真是double precision,所以在调用的时候改了:
SELECT ALL_ADD(price::real) FROM "US30"

run就正确了

阅读更多
个人分类: DB PostgreSQL
上一篇2018中级实训阶段一自学报告
下一篇在双系统之一Ubuntu下安装YaH3C并解决 [Errno 19] No such device成功连上校园网
想对作者说点什么? 我来说一句

新增或编辑时报400错误

2016年12月20日 521B 下载

没有更多推荐了,返回首页

关闭
关闭