首页  >  文章  >  数据库  >  oracle 数据库单子段多条记录合并一条记录函数

oracle 数据库单子段多条记录合并一条记录函数

WBOY
WBOY原创
2016-06-07 15:24:502222浏览

---- ============================================= ===================== -- 1.创建oracle TYPE -- ==================== ============================================== 创建或替换 TYPE COLUMNSTRCAT 作为对象( str VARCHAR2(4000),静态函数



---- ================================================== ==================
-- 1.创建oracle TYPE
-- ================================================== ================


创建或替换 TYPE COLUMNSTRCAT 作为对象

str VARCHAR2(4000),
静态函数 ODCIAggregateInitialize(sctx IN OUT ColumnStrCat) 返回数字,
成员函数 ODCIAggregateIterate(self IN OUT ColumnStrCat, value IN VARCHAR2) 返回数字,
成员函数 ODCIAggregateTerminate(self IN ColumnStrCat, returnValue OUT VARCHAR2, flags IN number) 返回数字,
成员函数 ODCIAggregateMerge(self IN OUT ColumnStrCat,ctx2 IN ColumnStrCat) 返回数字
);
-- ================================================== ================
-- 2.创建oracle TYPE BODIES
-- ================================================== ================
创建或替换类型主体列STRCAT是
   -- 会员流程及功能
   静态函数 ODCIAggregateInitialize(sctx IN OUT ColumnStrCat)
 返回号码

开始
 sctx := ColumnStrCat('');
 返回 ODCIConst.Success;
结束;




成员函数 ODCIAggregateIterate(self IN OUT ColumnStrCat, value IN varchar2) 返回数字为
计数器整数;
开始
 self.str := self.str||值||',';
 返回 ODCIConst.Success;
结束;




成员函数 ODCIAggregateTerminate(self IN ColumnStrCat, returnValue OUT varchar2, flags IN number) 返回编号为
开始
 returnValue := substr(self.str,1,length(self.str)-1);
 返回 ODCIConst.Success;
结束;




成员函数 ODCIAggregateMerge(self IN OUT ColumnStrCat, ctx2 IN ColumnStrCat) 返回编号为
开始
 self.str := self.str||ctx2.str;
 返回 ODCIConst.Success;
结束;
结束;


-- -- ================================================ ==================
-- 3.创建oracle函数
-- -- ================================================ ==================
创建或替换函数列STRJOIN(输入varchar2)返回varchar2

使用 ColumnStrCat 并行启用聚合;


-- -- ============================================= =====================
-- 4. 使用示例
-- -- ================================================ ==================

select COLUMNSTRJOIN(a.name) from table_name a where a.type >; 1


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn