成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ORACLE12C數(shù)據(jù)庫 WMSYS.WM_CONCAT函數(shù)無效問題

IT那活兒 / 2755人閱讀
ORACLE12C數(shù)據(jù)庫 WMSYS.WM_CONCAT函數(shù)無效問題

一、背景


11G數(shù)據(jù)庫的用戶遷移到12C,在老庫(Oracle11g)中用戶業(yè)務(wù)查詢SQL中有使用到WMSYS.WM_CONCAT()函數(shù),在用戶遷移到新庫后,業(yè)務(wù)查詢SQL中包含WMSYS.WM_CONCAT()函數(shù)的均提示“無效的標(biāo)識符”錯誤。通過mos上確認(rèn)該函數(shù)已在12c中廢棄。


二、解決辦法

 

1、在12c中,我們可以使用listagg函數(shù)替代wm_concat函數(shù)進(jìn)行使用。

2、手工創(chuàng)建vm_concat函數(shù)

考慮到修改程序的工作量和時間要求,此次我們通過手工創(chuàng)建方式解決,具體操作如下:

(1)解鎖wmsys用戶

alter user wmsys account unlock;

(2)wmsys用戶授權(quán),可根據(jù)需要授權(quán),不建議授權(quán)所有權(quán)限

GRANT ALL PRIVILEGES TO WMSYS;

3、SYS下創(chuàng)建可用的wm_concat函數(shù),直接執(zhí)行以下語句

(1)定義類型

CREATE OR REPLACE TYPE WMSYS.WM_CONCAT_IMPL AS OBJECT

(

CURR_STR VARCHAR2(32767),

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

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,

P1 IN VARCHAR2) RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,

RETURNVALUE OUT VARCHAR2,

FLAGS IN NUMBER)

RETURN NUMBER,

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,

SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER

);

/

(2)定義類型body:

CREATE OR REPLACE TYPE BODY WMSYS.WM_CONCAT_IMPL

IS

STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL)

RETURN NUMBER

IS

BEGIN

SCTX := WM_CONCAT_IMPL(NULL) ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,

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 WM_CONCAT_IMPL,

RETURNVALUE OUT VARCHAR2,

FLAGS IN NUMBER)

RETURN NUMBER

IS

BEGIN

RETURNVALUE := CURR_STR ;

RETURN ODCICONST.SUCCESS;

END;

MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,

SCTX2 IN 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;

/

(3)自定義行變列函數(shù):

CREATE OR REPLACE FUNCTION wmsys.wm_concat(P1 VARCHAR2)

RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;

/

4、創(chuàng)建完成,給其創(chuàng)建同義詞及授權(quán),以供其他用戶能正常使用。

create public synonym WM_CONCAT_IMPL for wmsys.WM_CONCAT_IMPL

/

create public synonym wm_concat for wmsys.wm_concat

/

grant execute on WM_CONCAT_IMPL to public

/

grant execute on WM_CONCAT to public

/


5、還原wmsys用戶狀態(tài)

Alteruser wmsys account lock;

6、測試12cWM_CONCAT函數(shù)可以正常使用

END





文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129978.html

相關(guān)文章

  • 集成安裝之Oracle12C補(bǔ)丁升級數(shù)據(jù)字典更新報錯處理

    集成安裝之Oracle12C補(bǔ)丁升級數(shù)據(jù)字典更新報錯處理 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏795
  • DBASK問答集萃(2)

    摘要:新晉技術(shù)專家下面是墨天輪部分新晉的技術(shù)專家。大家可以點擊往期閱讀墨天輪技術(shù)專家邀請函了解詳情,申請成為我們的技術(shù)專家,加入專家團(tuán)隊,與我們一起創(chuàng)建一個開放互助的數(shù)據(jù)庫技術(shù)社區(qū)。新關(guān)聯(lián)公眾號墨天輪是一個開放互助的數(shù)據(jù)庫技術(shù)社區(qū)。 引言 近期我們在DBASK小程序增加了數(shù)據(jù)庫 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的專題欄目和一些新的技術(shù)...

    liuchengxu 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<