zoukankan      html  css  js  c++  java
  • oracle 字符串列转行

    Rows to String
    Tom Kyte's STRAGG

    This tutorial shows how to collect values from multiple rows into a single, comma delimited string. This is also known as "string aggregation". It takes values like these

    GROUP_KEY  VAL
    ---------- ----------
    Group 3    a
    Group 3    b
    Group 3    c
     and yields a string like this.

    GROUP_KEY  STRING
    ---------- ---------------
    Group 3    a,b,c

    content :------------------------------------

    create or replace type stragg_type as object
    (
      string varchar2(4000),

      static function ODCIAggregateInitialize
        ( sctx in out stragg_type )
        return number ,

      member function ODCIAggregateIterate
        ( self  in out stragg_type ,
          value in     varchar2
        ) return number ,

      member function ODCIAggregateTerminate
        ( self        in  stragg_type,
          returnvalue out varchar2,
          flags in number
        ) return number ,

      member function ODCIAggregateMerge
        ( self in out stragg_type,
          ctx2 in     stragg_type
        ) return number
    );
    /

    create or replace type body stragg_type
    is

      static function ODCIAggregateInitialize
      ( sctx in out stragg_type )
      return number
      is
      begin

        sctx := stragg_type( null ) ;

        return ODCIConst.Success ;

      end;

      member function ODCIAggregateIterate
      ( self  in out stragg_type ,
        value in     varchar2
      ) return number
      is
      begin

        self.string := self.string || ',' || value ;

        return ODCIConst.Success;

      end;

      member function ODCIAggregateTerminate
      ( self        in  stragg_type ,
        returnvalue out varchar2 ,
        flags       in  number
      ) return number
      is
      begin

        returnValue := ltrim( self.string, ',' );

        return ODCIConst.Success;

      end;

      member function ODCIAggregateMerge
      ( self in out stragg_type ,
        ctx2 in     stragg_type
      ) return number
      is
      begin

        self.string := self.string || ctx2.string;

        return ODCIConst.Success;

      end;

    end;
    /

    create or replace function stragg
      ( input varchar2 )
      return varchar2
      deterministic
      parallel_enable
      aggregate using stragg_type
    ;
    /

  • 相关阅读:
    小程序官方请求封装
    小程序天/小时/分秒倒计时封装
    小程序不定数量左右滑动中间放大轮播图效果
    小程序换行符检测换行
    小程序点击图片重新排序写法
    基于webuploader.js的单图片上传封装
    VMware Fusion 11 序列号
    Ionic 4 beta + Capacitor beta 尝鲜
    C语言学习笔记之动态分配数组空间
    C语言学习笔记之获取文件长度
  • 原文地址:https://www.cnblogs.com/willsun8023/p/1590219.html
Copyright © 2011-2022 走看看