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;

  • 相关阅读:
    C#将方法作为参数传递(用委托接收方法)
    C#委托
    ASP.NET Identity系列教程-4【Identity高级技术】
    ASP.NET Identity系列教程-3【运用ASP.NET Identity】
    ASP.NET Identity系列教程-2【Identity入门】
    claim、claimsidentity、claimsprincipal
    Entity Framework的几种初始化器
    微信小程序环境准备
    ESLint那些坑
    absolute imports should come before relative imports import/first
  • 原文地址:https://www.cnblogs.com/syveen/p/284362.html
Copyright © 2011-2022 走看看