ORACLE中的自定义聚合函数(User-Defined Aggregate Functions)

本文介绍了Oracle中的自定义聚合函数,通过ODCIAggregate接口,允许用户使用PLSQL、C等语言定义聚合函数。尽管在实际应用中较少使用,主要原因是PLSQL已能满足大部分需求,且效率可能不亚于自定义函数。文章通过SecondMax()函数的创建过程,展示了如何封装自定义聚合函数,以提高代码可读性和技术保密。
摘要由CSDN通过智能技术生成

聚合函数也叫分组函数,是对多行进行计算的一种函数,比如SUM、COUNT、AVG、MAX、MIN等等。

Oracle中为了增强扩展性,提供了一个自定义聚合函数的接口,ODCIAggregate(),用户可以用Oracle支持的各类编程语言(PLSQL、C、C++、JAVA等)定义一个聚合函数,并在程序中按照一样的语法进行使用。

实际应用中,使用到自定义聚合函数的场景极少,理由是:

1.PLSQL语言已经足够丰富,可以轻松实现绝大部分聚合场景;

2.自定义聚合函数的效率不见得比直接PLSQL实现更高。

比如ITPUB上有个求加权中位数的帖子,答主给出了两种方案的比较,实际上自定义聚合函数只是对PLSQL实现的一个包装,详细可以参考原文 

http://www.itpub.net/forum.php?mod=viewthread&tid=1377770

那么,自定义聚合函数到底有啥用呢?个人觉得只有一个:封装的需要,有时是为了改善代码可读性,有时是基于技术细节的保密。

下面把Oracle官方文档的一个自定义聚合案例记录一下,该案例中的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值