国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ORACLE12C數據庫 WMSYS.WM_CONCAT函數無效問題

IT那活兒 / 2733人閱讀
ORACLE12C數據庫 WMSYS.WM_CONCAT函數無效問題

一、背景


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


二、解決辦法

 

1、在12c中,我們可以使用listagg函數替代wm_concat函數進行使用。

2、手工創建vm_concat函數

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

(1)解鎖wmsys用戶

alter user wmsys account unlock;

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

GRANT ALL PRIVILEGES TO WMSYS;

3、SYS下創建可用的wm_concat函數,直接執行以下語句

(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)自定義行變列函數:

CREATE OR REPLACE FUNCTION wmsys.wm_concat(P1 VARCHAR2)

RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;

/

4、創建完成,給其創建同義詞及授權,以供其他用戶能正常使用。

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用戶狀態

Alteruser wmsys account lock;

6、測試12cWM_CONCAT函數可以正常使用

END





文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129978.html

相關文章

  • 集成安裝之Oracle12C補丁升級數據字典更新報錯處理

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

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

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

    liuchengxu 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

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