文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>oracle 聚类函数 group 连接字符 varchar

oracle 聚类函数 group 连接字符 varchar

时间:2010-06-18  来源:nsq029

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


测试select col1,GROUPCATVAR(col2) from table_name group by col1;

对于连接后的数据较大该函数就不适应,需要改进,请参考http://blog.chinaunix.net/u3/97653/showart.php?id=2255720

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载