zoukankan      html  css  js  c++  java
  • [收藏]在oracle里定义一个自定义字符串的聚集函数

    create or replace type strcat_type as object (
        cat_string varchar2(4000),
        static function ODCIAggregateInitialize(cs_ctx In Out strcat_type) return number,
        member function ODCIAggregateIterate(self In Out strcat_type,value in varchar2) return number,
        member function ODCIAggregateMerge(self In Out strcat_type,ctx2 In Out strcat_type) return number,
        member function ODCIAggregateTerminate(self In Out strcat_type,returnValue Out varchar2,flags in number) return number
    )

    --------------

    create or replace type body strcat_type is
      static function ODCIAggregateInitialize(cs_ctx IN OUT strcat_type) return number
      is
      begin
          cs_ctx := strcat_type( null );
          return ODCIConst.Success;
      end;

      member function ODCIAggregateIterate(self IN OUT strcat_type,
                                           value IN varchar2 )
      return number
      is
      begin
          --1. concat string
          self.cat_string := self.cat_string || ','|| value;
          -- 2.get union set
          -- if  instr(self.cat_string, value ) = 0 or self.cat_string is null then
          --        self.cat_string := self.cat_string || ',' || value ;
          -- else
          --        self.cat_string := self.cat_string ||'' ;
          -- end if ;
          return ODCIConst.Success;
      end;

      member function ODCIAggregateTerminate(self IN Out strcat_type,
                                             returnValue OUT varchar2,
                                             flags IN number)
      return number
      is
      begin
          returnValue := ltrim(rtrim(self.cat_string,','),',');
          return ODCIConst.Success;
      end;

      member function ODCIAggregateMerge(self IN OUT strcat_type,
                                         ctx2 IN Out strcat_type)
      return number
      is
      begin
          self.cat_string := self.cat_string || ',' || ctx2.cat_string;
          return ODCIConst.Success;
      end;

    end;

    -------------------

    CREATE OR REPLACE FUNCTION strcat(input varchar2 )
    RETURN varchar2
    PARALLEL_ENABLE AGGREGATE USING strcat_type;

  • 相关阅读:
    jquery 操作大全
    http获取图片信息
    微信公众号服务号与订阅号有什么区别?
    国际语言代码 Language Code
    vs 2012 未能找到与约束contractName Microsoft.VisualStudio.Utilities...匹配的导出
    SQL Server 获取满足条件的每个条件下的前N条数据
    使用uploadify上传图片时返回“Cannot read property 'queueData' of undefined”
    Visual Studio 2017 添加引用报错(未能正确加载ReferenceManagerPackage包)
    html之select标签
    jQuery中Ajax的属性设置
  • 原文地址:https://www.cnblogs.com/syveen/p/284362.html
Copyright © 2011-2022 走看看