日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle聚合函数wmsys,oracle 自定义聚合函数

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle聚合函数wmsys,oracle 自定义聚合函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oracle提供了聚合函數的API可以讓我們方便的自己定義聚合函數。

詳細看oracle官方文檔:

http://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggref.htm

http://docs.oracle.com/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#g1008306

wmsys.wm_concat(合并行函數)是一個很好的例子:

FUNCTION wm_concat(P1 VARCHAR2) RETURN CLOB AGGREGATE USING WMSYS.WM_CONCAT_IMPL ;

TYPE wm_concat_impl AUTHID CURRENT_USER AS OBJECT

(

CURR_STR ? ?VARCHAR2(32767),

CURR_STR_C ?CLOB,

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL, P1 VARCHAR2) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF WM_CONCAT_IMPL, RETURNVALUE OUT CLOB, FLAGS NUMBER) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 WM_CONCAT_IMPL) RETURN NUMBER

);

TYPE BODY wm_concat_impl IS

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER IS

BEGIN

SCTX := WM_CONCAT_IMPL(NULL,NULL) ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL, P1 VARCHAR2) RETURN NUMBER IS

BEGIN

IF (CURR_STR_C IS NULL AND (CURR_STR IS NULL OR LENGTH(CURR_STR)<29950)) THEN

IF(CURR_STR IS NOT NULL) THEN

CURR_STR := CURR_STR || ',' || P1;

ELSE

CURR_STR := P1;

END IF;

ELSE

IF (CURR_STR_C IS NULL) THEN

CURR_STR_C := CURR_STR ;

CURR_STR := NULL ;

END IF ;

CURR_STR_C := CURR_STR_C || ',' || P1;

END IF ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF WM_CONCAT_IMPL, RETURNVALUE OUT CLOB, FLAGS NUMBER) RETURN NUMBER IS

BEGIN

IF (CURR_STR IS NOT NULL) THEN

RETURNVALUE := CURR_STR ;

ELSE

RETURNVALUE := CURR_STR_C ;

END IF ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 WM_CONCAT_IMPL) RETURN NUMBER IS

BEGIN

IF(SCTX2.CURR_STR IS NOT NULL) THEN

SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;

END IF;

RETURN ODCICONST.SUCCESS;

END;

END;

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/195110/viewspace-1682558/,如需轉載,請注明出處,否則將追究法律責任。

總結

以上是生活随笔為你收集整理的oracle聚合函数wmsys,oracle 自定义聚合函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。