oracle 自定义 group 聚合函数

create or replace type CLOB_GROUP_OBJ as object ( 
    sum_string clob, 
    static function ODCIAggregateInitialize(v_self in out CLOB_GROUP_OBJ) return number, 
    member function ODCIAggregateIterate(self in out CLOB_GROUP_OBJ, value in varchar2) return number, 
    member function ODCIAggregateMerge(self in out CLOB_GROUP_OBJ, v_next in CLOB_GROUP_OBJ) return number, 
    member function ODCIAggregateTerminate(self in CLOB_GROUP_OBJ, return_value out clob ,v_flags in number) return number 
) 
/ 
create or replace type body CLOB_GROUP_OBJ is 
    static function ODCIAggregateInitialize(v_self in out CLOB_GROUP_OBJ) return number is 
    begin 
        v_self := CLOB_GROUP_OBJ(null); 
        return ODCICONST.Success; 
    end; 
    member function ODCIAggregateIterate(self in out CLOB_GROUP_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 CLOB_GROUP_OBJ, v_next in CLOB_GROUP_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 CLOB_GROUP_OBJ, return_value out clob ,v_flags in number) return number is 
    begin 
         return_value:= self.sum_string; 
         return ODCICONST.Success; 
    end; 
end; 
/ 
create or replace function GROUPCATCLOB(value varchar2) return clob 
    parallel_enable aggregate using CLOB_GROUP_OBJ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值