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;

  • 相关阅读:
    九 .Django 管理后台(admin)
    四. 访问权限的使用和设计
    三 .复习python的 ORM 操作
    二 .python基于djago项目登录 ajax基本使用
    一 .python基于djago项目书籍管理
    二十六 .定时器(验证码)和短信(验证码)
    二十六 .ajax登录 认证 验证码(session)
    二十五 .Django---------auth认证组件
    二十四 .Django中间件
    【CF896C】Willem, Chtholly and Seniorious
  • 原文地址:https://www.cnblogs.com/syveen/p/284362.html
Copyright © 2011-2022 走看看