<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    Oracle自定義聚集函數(shù)
    ?
    ?
    ??? 在yangtingkun博客上看到很早以前的一篇文章,是用一個type來自定義聚集函數(shù)的,覺得非常神奇,想想用普通的函數(shù)定義還真的是不能滿足需求,只能用Oracle的說明來做。開始死活看不懂這個type定義的原理,發(fā)現(xiàn)參數(shù)傳入傳出的好麻煩,后來在網(wǎng)上找了Oracle的文檔,發(fā)現(xiàn)這是Oracle規(guī)定的固定格式,而且函數(shù)名也是確定的,貌似這樣才能依次調(diào)用。下面簡單了解一下:
    ?
    ??? 關(guān)于函數(shù)的介紹看這里: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciaggref.htm#BABCFHFB
    ??? 具體的介紹看這里:http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciaggfns.htm
    ?
    ?
    ??? 總體感覺就是一個固定模式的套用,只要簡單記一下用法就可以了。而且Oracle文檔上也沒有太具體的描述。看個例子(轉(zhuǎn)載):
    ?
    對字符串的“sum”——在Oracle中自定義聚集函數(shù)的例子
    ===========================================================
    作者: yangtingkun(http://yangtingkun.itpub.net)
    發(fā)表于: 2004.10.19 17:59
    分類: ORACLE
    出處: http://yangtingkun.itpub.net/post/468/3380
    ---------------------------------------------------------------
    Oracle的定制功能十分強大。前幾天在碰到一個問題的時候,查詢文檔發(fā)現(xiàn),oracle不但允許用戶定制自己的函數(shù),還可以定制自己的聚集函數(shù)和分析函數(shù)。
    ?
    下面是我使用自定義聚集函數(shù)建立一個字符串“sum”的小例子。

    SQL> CREATE OR REPLACE TYPE T_LINK AS OBJECT (
    ? 2? STR VARCHAR2(30000),
    ? 3? STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER,
    ? 4? MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER,
    ? 5? MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER,
    ? 6? MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER
    ? 7? )
    ? 8? /
    ?
    類型已創(chuàng)建。
    ?
    SQL> CREATE OR REPLACE TYPE BODY T_LINK IS
    ? 2? STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER IS
    ? 3? BEGIN
    ? 4? SCTX := T_LINK(NULL);
    ? 5? RETURN ODCICONST.SUCCESS;
    ? 6? END;
    ? 7?
    ? 8? MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS
    ? 9? BEGIN
    10? SELF.STR := SELF.STR || VALUE;
    11? RETURN ODCICONST.SUCCESS;
    12? END;
    13??
    14? MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER IS
    15? BEGIN
    16? RETURNVALUE := SELF.STR;
    17? RETURN ODCICONST.SUCCESS;
    18? END;
    19?
    20? MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER IS
    21? BEGIN
    22? NULL;
    23? RETURN ODCICONST.SUCCESS;
    24? END;
    25? END;
    26? /
    ?
    類型主體已創(chuàng)建。
    ?
    SQL> CREATE OR REPLACE FUNCTION F_LINK(P_STR VARCHAR2) RETURN VARCHAR2
    ? 2? AGGREGATE USING T_LINK;
    ? 3? /
    ?
    函數(shù)已創(chuàng)建。
    ?
    SQL> CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(20));
    ?
    表已創(chuàng)建。
    ?
    SQL> INSERT INTO TEST VALUES (1, 'AAA');
    ?
    已創(chuàng)建 1 行。
    ?
    SQL> INSERT INTO TEST VALUES (2, 'BBB');
    ?
    已創(chuàng)建 1 行。
    ?
    SQL> INSERT INTO TEST VALUES (1, 'ABC');
    ?
    已創(chuàng)建 1 行。
    ?
    SQL> INSERT INTO TEST VALUES (3, 'CCC');
    ?
    已創(chuàng)建 1 行。
    ?
    SQL> INSERT INTO TEST VALUES (2, 'DDD');
    ?
    已創(chuàng)建 1 行。
    ?
    SQL> COMMIT;
    ?
    提交完成。
    ?
    SQL> COL NAME FORMAT A60
    ?
    SQL> SELECT ID, F_LINK(NAME) NAME FROM TEST GROUP BY ID;
    ?
    ??????? ID NAME
    ---------- ------------------------------------------------------
    ???????? 1 AAAABC
    ???????? 2 BBBDDD
    ???????? 3 CCC
    ?
    ?
    ?
    附:如果關(guān)于type的一些基礎(chǔ)用法,可以參見此處:http://blog.chinaunix.net/u/20762/showart_329455.html
    posted on 2009-06-26 21:43 decode360 閱讀(553) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
    主站蜘蛛池模板: 国产成人精品日本亚洲语音| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 国产亚洲美女精品久久久久狼| 两性色午夜免费视频| 亚洲免费在线视频播放| 波多野结衣免费视频观看| 在线观看肉片AV网站免费| 亚洲愉拍一区二区三区| 国产亚洲精品看片在线观看| 18禁成人网站免费观看| 无人视频在线观看免费播放影院| 亚洲爆乳无码专区| 免费观看a级毛片| 国产va在线观看免费| 亚洲爆乳AAA无码专区| 亚洲成a人片77777kkkk| 在线免费观看一级毛片| 国产精品内射视频免费| 亚洲av无码一区二区三区观看| 亚洲av中文无码| 国产h视频在线观看免费| 久久成人永久免费播放| 亚洲国产精品无码久久98| 久久亚洲精品国产精品黑人| 国产在线观看免费视频播放器| 香蕉成人免费看片视频app下载| 国产亚洲福利一区二区免费看| 18gay台湾男同亚洲男同| 亚洲国产V高清在线观看| 国产99视频精品免费观看7| 中文字幕成人免费高清在线| 一区二区亚洲精品精华液| 亚洲av无码乱码国产精品| 四虎影在线永久免费四虎地址8848aa | 黄色毛片免费在线观看| 亚洲乱码卡一卡二卡三| 亚洲av综合avav中文| 亚洲人成无码网WWW| 日本xxwwxxww在线视频免费| 免费可以看黄的视频s色| 蜜桃成人无码区免费视频网站|