CREATE AGGREGATE 语句

使用 CREATE AGGREGATE 语句创建新的聚集函数,并在 sysaggregates 系统目录表中注册它。

用户定义聚集(UDA)通过执行用户实施的聚集计算来扩展数据库服务器的功能。

该语句是 SQL ANSI/ISO 标准的扩展。

语法

Modifiers
元素 描述 限制 语法
aggregate 新聚集的名称 在内置聚集和 UDR 的名称中必须唯一 标识符
comb_func 用来将部分结果合并到其它部分结果中并返回更新的部分结果的函数 必须同时为并行查询和顺序查询指定组合函数 标识符
final_func 将部分结果转换到结果类型的函数 如果省略此项,则返回值是 iter_func 的最终结果 标识符
init_func 初始化聚集计算所需的数据结构的函数 必须能够处理 NULL 参数 标识符
iter_func 将单个值与部分结果合并并返回更新的部分结果的函数 必须指定迭代符函数。如果省略 init_func ,则 iter_func 必须能够处理 NULL 参数 标识符

用法

您可以按任何顺序指定 INIT 、ITER 、COMBINE 、FINAL 和 HANDLESNULLS 修饰符。
Important: 必须在 CREATE AGGREGATE 语句中指定 ITER 和 COMBINE 修饰符。不需要在 CREATE AGGREGATE 语句中指定 INIT 、FINAL 和 HANDLESNULLS 修饰符。

ITER 、COMBINE 、FINAL 和 INIT 修饰符指定用户定义的聚集的支持函数。这些支持函数在创建用户定义的聚集时无需存在。

如果省略 HANDLESNULLS 修饰符,拥有 NULL 聚集参数值的行将不会对聚集计算起作用。如果您将 HANDLESNULLS 修饰符包含在内,则还必须定义所有支持函数以处理 NULL 值。

Important: SELECT 语句只能包含一个 UDA 表达式,它的第一个参数是 DISTINCT 或 UNIQUE 关键字(而不是 ALL 关键字,或者没有关键字)。然而在包含子查询的查询中,您可在查询的每一级指定零个或一个 DISTINCT 或 UNIQUE 用户定义聚集表达式。内置的聚集不服从该限制。

如果包含可选的 IF NOT EXISTS 关键字,且指定名称的聚集已经在当前数据库中注册过,则数据库服务器不会采取任何操作(而不是向该应用程序发送异常)。

1 请参阅 所有者名称