oracle中用户自己创建与调用聚合函数

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 03:11 点击:

在做项目的时候,遇到将多条记录合并为一条记录,然后将不同的字段合并为一个字段显示,并用逗号分开;本人使用后,解决了很多不便解决的问题,特整理如下,以供各位网友参考!

具体创建如下:首先打开sql_plus:

创建函数使用的强制类:

--oracle9i聚合函数 (查询时使用)
create type CatStringImpl as object (
catstring VARCHAR2(4000), -- 返回的字符串
static function ODCIAggregateInitialize(sctx IN OUT CatStringImpl)
return number,
member function ODCIAggregateIterate(self IN OUT CatStringImpl,value IN varchar2)
return number,
member function ODCIAggregateTerminate(self IN CatStringImpl,returnValue OUT varchar2, flags IN number)
return number,
member function ODCIAggregateMerge(self IN OUT CatStringImpl,ctx2 IN CatStringImpl)
return number
);

然后创建函数方法,就是函数功能:

create or replace type body CatStringImpl as
static function ODCIAggregateInitialize(sctx IN OUT CatStringImpl) return number is
begin
sctx := CatStringImpl('');
return ODCIConst.Success;
end;
member function ODCIAggregateIterate(self IN OUT CatStringImpl, value IN varchar2) return number is
begin
self.catstring := self.catstring || ',' || value;
return ODCIConst.Success;
end;
member function ODCIAggregateTerminate(self IN CatStringImpl, returnValue OUT varchar2, flags IN number) return number is
begin
returnValue := self.catstring;
return ODCIConst.Success;
end;
member function ODCIAggregateMerge(self IN OUT CatStringImpl , ctx2 IN CatStringImpl ) return number is
begin
self.catstring := self.catstring || ',' || ctx2.catstring;
return ODCIConst.Success;
end;
end;

最后就是建立函数:

create function catstr( input varchar2 ) return varchar2 PARALLEL_ENABLE AGGREGATE USING CatStringImpl;

这样就建立好了目标函数,在查询调用时如下:

select catstr( a) , b , c from tb group by b , c 就可以将字符串按照code组合起来.

catstr为函数名称,其中a是同个字段对应有不同的值,b,c就是同个字段并且相同的值.

 

有了这个方法,以后使用就方便多了!

作者“yipbxx”
 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1