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

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

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

    J2EE社區

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    破解移植wm_concat

    Posted on 2011-08-15 11:01 xcp 閱讀(1004) 評論(0)  編輯  收藏 所屬分類: Database

    --
    /*****************************************
       功能: 破解移植wm_concat
       作者:xcp
       日期:2011-07-14
       說明:wm_concat出現在oracle10g版本中,不僅是加密的,而且是在一個單獨的用戶中,不方便使用。并且10g以前的版本也用不上。經過破解移植,可以方便大家使用
             將下邊的一個type,一個函數的創建腳本執行,就可以構建自己的wm_concat(這里叫zh_concat)。使用方法同wm_concat:
    ******************************************/
    --type:
    create or replace TYPE za_concat_im
    AUTHID CURRENT_USER AS OBJECT
    (
      CURR_STR VARCHAR2(32767),
      STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT za_concat_im) RETURN NUMBER,
      MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT za_concat_im,
                   P1 IN VARCHAR2) RETURN NUMBER,
      MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN za_concat_im,
                                     RETURNVALUE OUT VARCHAR2,
                                     FLAGS IN NUMBER)
                         RETURN NUMBER,
      MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT za_concat_im,
                        SCTX2 IN  za_concat_im) RETURN NUMBER
    );
    /
    create or replace TYPE BODY za_concat_im
    IS
      STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT za_concat_im)
      RETURN NUMBER
      IS
      BEGIN
        SCTX := za_concat_im(NULL) ;
        RETURN ODCICONST.SUCCESS;
      END;
      MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT za_concat_im,
              P1 IN VARCHAR2)
      RETURN NUMBER
      IS
      BEGIN
        IF(CURR_STR IS NOT NULL) THEN
          CURR_STR := CURR_STR || ',' || P1;
        ELSE
          CURR_STR := P1;
        END IF;
        RETURN ODCICONST.SUCCESS;
      END;
      MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN za_concat_im,
                                     RETURNVALUE OUT VARCHAR2,
                                     FLAGS IN NUMBER)
        RETURN NUMBER
      IS
      BEGIN
        RETURNVALUE := CURR_STR ;
        RETURN ODCICONST.SUCCESS;
      END;
      MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT za_concat_im,
                                       SCTX2 IN za_concat_im)
      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;
    /

    --函數:
    create or replace FUNCTION za_concat(P1 VARCHAR2)
    RETURN VARCHAR2 AGGREGATE USING za_concat_im ;
    /




    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
    mail: 聯系我


    主站蜘蛛池模板: 亚洲码在线中文在线观看| 四虎永久免费地址在线网站| 久久久99精品免费观看| 成年女人A毛片免费视频| eeuss影院免费92242部| 一级做a爰片久久免费| 无遮挡国产高潮视频免费观看| 边摸边脱吃奶边高潮视频免费| 综合一区自拍亚洲综合图区| 亚洲AV成人一区二区三区观看| 亚洲AV成人无码网天堂| 免费国产黄网站在线观看动图| 爱情岛论坛免费视频| 国产激情久久久久影院老熟女免费| 中国极品美軳免费观看| 免费观看男人吊女人视频| 免费在线看污视频| 2020因为爱你带字幕免费观看全集| 天天影视色香欲综合免费| 成年在线网站免费观看无广告 | 亚洲AV成人无码久久WWW| 国产大陆亚洲精品国产| 一级毛片一级毛片免费毛片 | 亚洲五月综合缴情在线观看| 91精品啪在线观看国产线免费| 亚洲视频免费观看| 大学生高清一级毛片免费| 国产伦一区二区三区免费| 久久精品国产亚洲7777| 亚洲第一精品在线视频| 亚洲av无码一区二区三区天堂古代| 亚洲jizzjizz少妇| 久久久精品国产亚洲成人满18免费网站| 久久青草免费91观看| 成年人视频在线观看免费| 亚洲av午夜精品一区二区三区| 亚洲Av永久无码精品三区在线| 2020久久精品亚洲热综合一本| 免费国产a理论片| 222www免费视频| 免费a级毛片大学生免费观看 |