Oracle自定义聚合函数实现字符串连接的聚合

 
create or replace type string_sum_obj as object ( 
--聚合函数的实质就是一个对象 
     sum_string varchar2(4000), 
     static function ODCIAggregateInitialize(v_self in out string_sum_obj) return number, 
     --对象初始化 
     member function ODCIAggregateIterate(self in out string_sum_obj, value in varchar2) return number, 
     --聚合函数的迭代方法(这是最重要的方法) 
     member function ODCIAggregateMerge(self in out string_sum_obj, v_next in string_sum_obj) return number, 
     --当查询语句并行运行时,才会使用该方法,可将多个并行运行的查询结果聚合 
      
     member function ODCIAggregateTerminate(self in string_sum_obj, return_value out varchar2 ,v_flags in number) return number 
     --终止聚集函数的处理,返回聚集函数处理的结果. 


create or replace type body string_sum_obj is 
     static function ODCIAggregateInitialize(v_self in out string_sum_obj) return number is 
     begin 
         v_self := string_sum_obj(null); 
         return ODCICONST.Success; 
     end; 
     member function ODCIAggregateIterate(self in out string_sum_obj, value in varchar2) return number is 
     begin 
          /* 连接 */    
          self.sum_string := self.sum_string || value; 
          return ODCICONST.Success; 
          /* 最大值 */ 
          if self.sum_string<value then 
              self.sum_string:=value; 
          end if; 
          /* 最小值 */ 
          if self.sum_string>value then 
       self.sum_string:=value;           
          end if; 
           
          return ODCICONST.Success; 
     end; 
     member function ODCIAggregateMerge(self in out string_sum_obj, v_next in string_sum_obj) return number is 
     begin 
          /* 连接 */    
          self.sum_string := self.sum_string || v_next.sum_string; 
          return ODCICONST.Success; 
          /* 最大值 */ 
          if self.sum_string<v_next.sum_string then 
              self.sum_string:=v_next.sum_string; 
          end if;

/* 最小值 */ 
          if self.sum_string>v_next.sum_string then 
              self.sum_string:=v_next.sum_string;           
          end if; 
           
          return ODCICONST.Success; 
     end; 
     member function ODCIAggregateTerminate(self in string_sum_obj, return_value out varchar2 ,v_flags in number) return number is 
     begin 
          return_value:= self.sum_string; 
          return ODCICONST.Success; 
     end; 
end; 

create or replace function ConnStrSum(value Varchar2) return Varchar2 
     parallel_enable aggregate using string_sum_obj;

oracle 自定义 聚合函数的更多相关文章

  1. ORACLE 自定义聚合函数

    用户可以自定义聚合函数  ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...

  2. oracle 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值

    create or replace function MAX_O3_8HOUR_ND(value NUMBER) return NUMBER parallel_enable aggregate usi ...

  3. SQL Server 自定义聚合函数

    说明:本文依据网络转载整理而成,因为时间关系,其中原理暂时并未深入研究,只是整理备份留个记录而已. 目标:在SQL Server中自定义聚合函数,在Group BY语句中 ,不是单纯的SUM和MAX等 ...

  4. Spark基于自定义聚合函数实现【列转行、行转列】

    一.分析 Spark提供了非常丰富的算子,可以实现大部分的逻辑处理,例如,要实现行转列,可以用hiveContext中支持的concat_ws(',', collect_set('字段'))实现.但是 ...

  5. oracle sum()聚合函数

    原文链接:https://blog.csdn.net/cizatu5130/article/details/100291347 oracle sum()聚合函数 2016-05-13 20:08:00 ...

  6. Oracle自定义聚集函数

    今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG ...

  7. java:Oracle(聚合函数,多表查询,表之间的关系)

    1.聚合函数 --max,min,sum,avg,count,nvl(,) -- max:最大值 -- max既能取数字的最大值,也可以取字符串的最大值(英文字母排列顺序),根据场景实际意义来看,最好 ...

  8. sql server 2012 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值

    采用c#开发dll,并添加到sql server 中. 具体代码,可以用visual studio的向导生成模板. using System; using System.Collections; us ...

  9. postgresql 自定义聚合函数

    方法1 CREATE OR REPLACE FUNCTION public.sfun_test1( results numeric[], val numeric) RETURNS numeric[] ...

随机推荐

  1. mongoose的promise(转发)

    Switching out callbacks with promises in Mongoose Published on July 28, 2015 mongo node mongoose pro ...

  2. Web开发学习

    这几天天天学习网络开发的一些东西,接触了好些概念.原本打算自己弄个个人博客,BlogEngine.net已经做的很好了,可以直接拿来用而且源码开放.做的很不错,是WebForm的.本来打算好好学习一下 ...

  3. MongoDB固定集合

    固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...

  4. Xib和storyboard对比

  5. iOS获取运营商的相关信息

    1.导入:CoreTelephony.framework 2.添加头文件 #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import ...

  6. iOS使用代码截图

    /** * 截图代码 * * @param view 需要截图的view * @param rect 需要截取的区域 * * @return 返回截取的对象 */ + (UIImage *)viewS ...

  7. 《30天自制操作系统》02_day_学习笔记

    helloos3: helloos.nas的解释在P29中 接下来课本讲了一些汇编语言的知识,便于理解这个汇编文件helloos4: 讲解在P41 helloos.nas后半部分去掉就成了ipl.as ...

  8. G面经prepare: Android Phone Unlock Pattern

    1 2 3 4 5 6 7 8 9 只有中间没有其他键的两个键才能相连,比如1可以连 2 4 5 6 8 但不能连 3 7 9 但是如果中间键被使用了,那就可以连,比如5已经被使用了,那1就可以连9 ...

  9. MFC主窗口架构模型

    根据主窗口类型,MFC软件工程可以分为一下几种架构模型: 1.SDI(Simple Document Interface)单文档界面,一个主窗口下只编辑一份文档 2.MDI(Multiple Docu ...

  10. Linux Ubuntu常用终端命令

    查看cpu温度: 安装命令如下:sudo apt-get install acpi 然后acpi -t 即可 输入法配置窗口命令: fcitx-config-gtk3 im-config 任务管理器命 ...