开篇一笑:高中的时候,自行车被偷,早上顺路搭同学的自行车。我坐在后座看到前面一大妈跑步,很猥琐的对同学说:“你看前面那个肥婆跑得屁股都甩圆了!”这货沉默了一下。当我们和大妈擦身而过的时候,他喊道:“妈....”
本例实现的是连接字符串,并且去掉重复的项。
聚合函数实际上就是一个对象:
- create or replace type distinct_concat_type as object
- (
- --对象变量
- cat_string varchar2(500),
- --对象初始化
- static function ODCIAggregateInitialize(cs_ctx In Out distinct_concat_type)
- return number,
- --聚合函数的迭代方法
- member function ODCIAggregateIterate(self In Out distinct_concat_type,
- value in varchar2) return number,
- --当查询语句并行运行时,才会使用该方法,可将多个并行运行的查询结果聚合
- member function ODCIAggregateMerge(self In Out distinct_concat_type,
- ctx2 In Out distinct_concat_type)
- return number,
- --终止聚集函数的处理,返回聚集函数处理的结果
- member function ODCIAggregateTerminate(self In Out distinct_concat_type,
- returnValue Out varchar2,
- flags in number)
- return number
- )
接着实现对象主体:
- create or replace type body distinct_concat_type is
- --对象初始化
- static function ODCIAggregateInitialize(cs_ctx IN OUT distinct_concat_type)
- return number is
- begin
- cs_ctx := distinct_concat_type(null);
- return ODCIConst.Success;
- end;
- --聚合函数的迭代方法
- member function ODCIAggregateIterate(self IN OUT distinct_concat_type,
- value IN varchar2) return number is
- begin
- if self.cat_string is null or (instr(self.cat_string, value, 1, 1) = 0) then
- self.cat_string := self.cat_string || ',' || value;
- end if;
- return ODCIConst.Success;
- end;
- --当查询语句并行运行时,才会使用该方法,可将多个并行运行的查询结果聚合
- member function ODCIAggregateMerge(self IN OUT distinct_concat_type,
- ctx2 IN Out distinct_concat_type)
- return number is
- begin
- if self.cat_string is null or
- (instr(self.cat_string, ctx2.cat_string, 1, 1) = 0) then
- self.cat_string := self.cat_string || ',' || ctx2.cat_string;
- end if;
- return ODCIConst.Success;
- end;
- --终止聚集函数的处理,返回聚集函数处理的结果
- member function ODCIAggregateTerminate(self IN Out distinct_concat_type,
- returnValue OUT varchar2,
- flags IN number) return number is
- begin
- returnValue := ltrim(rtrim(self.cat_string, ','), ',');
- return ODCIConst.Success;
- end;
- end;
最后定义函数,使用的是上面定义的对象:
- create or replace function distinct_concat(input varchar2) return varchar2
- parallel_enable
- aggregate using distinct_concat_type;
相关推荐
传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考
oracle日期函数字符函数聚合函数
oracle字段去重 以某一个字段去重 oracle字段去重 以某一个字段去重
Oracle自定义聚合函数,分析函数.
Oracle聚合函数Oracle聚合函数Oracle聚合函数
oracle连续重复行去重,连续重复行合并。 要将连续n条记录中,id和 dno均相同的记录合并,合并后开始时间为第一条记录开始时间,结束时间为最后一条记录结束时间。
oracle高级语法(事物、函数、存储过程、触发器、异常)[参照].pdf
oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 pdf oracle函数介绍 6 著名函数之分析函数 pdf oracle函数介绍 7 非著名函数之分析函数 ...
oracle高级操作:分支判断函数,集合操作,排序函数,聚合函数……
Oracle高级应用所包含的内容及要掌握的应用列表。
今天小编就为大家分享一篇关于oracle常用分析函数与聚合函数的用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
oracle高级应用基础.pdf
这是我学习Oracle时,老师给的讲义,包含了Oracle从入门到高级应用的全部资料。 以下是文件列表 Day01-Oracle基础.pdf Day02-Oracle表的管理.pdf Day03-约束和序列.pdf Day04-SQL和操作符.pdf Day05-Oracle常用函数....
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100... * Oracle11g Release2版本引入了LISTAGG 函数,使得聚集连接字符串变得很容易。并且允许使用我们指定连接串中的字段顺序
第四篇 非著名函数之聚合函数 聚合函数可被用于select,order by以及having子句中。其运算可以基于group by的结果,也可以直接对所有记录进行运算。当然,这种类型语句相信大家平常也用的比较多,概念性的就不多介绍...
第三篇 著名函数之聚合函数 聚合函数可被用于select,order by以及having子句中。其运算可以基于group by的结果,也可以直接对所有记录进行运算。当然,这种类型语句相信大家平常也用的比较多,概念性的就不多介绍了...
Oracle 高级查询之分析函数部分--first_value,last_value
oracle函数大全,数字函数,字符函数,日期函数,聚合函数 的合集