Oracle之自訂彙總函式

來源:互聯網
上載者:User
--建立函數類型create type strcat_type as object (    cat_string varchar2(4000),    --自訂聚集合函式初始化設定,從這兒開始一個聚集合函式    static function ODCIAggregateInitialize(cs_ctx In Out strcat_type) return number,    --自訂聚集合函式,最主要的步驟,這個函數定義我們的聚集合函式具體做什麼操作,後面的例子,是取最大值,最小值,平均值,還是做串連操作.self 為當前聚集合函式的指標,用來與前面的計算結果進行關聯    member function ODCIAggregateIterate(self In Out strcat_type,value in varchar2) return number,    --用來合并兩個聚集合函式的兩個不同的指標對應的結果,使用者合并不同結果結的資料,特別是處理並行(parallel)查詢聚集合函式的時候.    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      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 varchar2PARALLEL_ENABLE AGGREGATE USING strcat_type;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.