合计函数(aggregate functions)就是对一组数据行进行处理的函数,如max和min(对一组数据取最大值和最小值)函数,合计函数用来简化开发者执行某个任务的逻辑复杂度。从Oracle 9i开始,开发者可以创建用户自定义的合计函数,它们可以重复使用而无需做任何修改。通过强有力的编程构造,合计函数实际上很容易编写。现在让我们看看它是如何工作的。
创建toList
为了看看构造合计函数是多么的简单,我举了一个合计函数的例子,即toList函数。该函数的参数为一组记录,它的功能是把保存在这些记录的特定字段的数据组合到一个用逗号做分隔符的清单中(成组)。下面的查询是一个例子供你参考:
select author, toList(title) titles
from books
group by author;
上面代码的运行结果如图A所示。
图A

ToList函数创建了一个书目清单
尽管我是使用Oracle的PL/SQL语言来创建我的toList函数的,你可以使用任何Oralce所支持的语言(如C++或者Java)来创建合计函数。所有的代码都可以在SQL*Plus、SQL*Spreadsheet以及其它Oracle SQL应用程序中执行。
创建一个合计函数分为五个步骤:规划函数的逻辑、创建函数的对象类型的对象头(object header)、编写对象类型的代码、例化对象类型、最后测试该函数。我将按顺序向你介绍这些步骤。
