ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle行转列相关函数

oracle行转列相关函数

原创 Linux操作系统 作者:skuary 时间:2013-01-14 16:32:14 0 删除 编辑
应需求分析的要求,需要对查询结果做个显示调整,我这里写了一个函数和一个类来实现这个功能,具体代码如下:
 
1. type:
 
     CREATE OR REPLACE TYPE "STRING_AGG_TYPE"                                          as object
(
   total varchar2(4000),
   static function
        ODCIAggregateInitialize(sctx IN OUT string_agg_type )
        return number,
   member function
        ODCIAggregateIterate(self IN OUT string_agg_type ,
                             value IN varchar2 )
        return number,
   member function
        ODCIAggregateTerminate(self IN string_agg_type,
                               returnValue OUT  varchar2,
                               flags IN number)
        return number,
   member function
        ODCIAggregateMerge(self IN OUT string_agg_type,
                           ctx2 IN string_agg_type)
        return number
)
 
2.type body:
 
 CREATE OR REPLACE TYPE BODY "STRING_AGG_TYPE"
is
static function ODCIAggregateInitialize(sctx IN OUT string_agg_type)
return number
is
begin
    sctx := string_agg_type( null );
    return ODCIConst.Success;
end;
member function ODCIAggregateIterate(self IN OUT string_agg_type,
                                     value IN varchar2 )
return number
is
begin
    self.total := self.total || ',' || value;
    return ODCIConst.Success;
end;
member function ODCIAggregateTerminate(self IN string_agg_type,
                                       returnValue OUT varchar2,
                                       flags IN number)
return number
is
begin
    returnValue := ltrim(self.total,',');
    return ODCIConst.Success;
end;
member function ODCIAggregateMerge(self IN OUT string_agg_type,
                                   ctx2 IN string_agg_type)
return number
is
begin
    self.total := self.total || ctx2.total;
    return ODCIConst.Success;
end;
end;
 
3.function:
 
CREATE OR REPLACE FUNCTION join_char(input varchar2 )
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING string_agg_type;
 
具体示例如下:
 
 
 
记录一下~

hzl.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25618347/viewspace-752642/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-31

  • 博文量
    88
  • 访问量
    361440