联奕科技工程体系

 找回密码
 立即注册
查看: 231|回复: 0

【事务中心】在使用12C的数据库部署时会出现的...

[复制链接]

1

主题

1

帖子

713

积分

高级会员

Rank: 4

积分
713
发表于 2019-4-23 10:48:38 | 显示全部楼层 |阅读模式
由于事务中心使用的数据库函数在12C的数据库中存在弃用的情况,需要在部署之后自定义建立相关函数,具体函数为:WM_CONCAT
不建立此项函数会导致事务中心首页界面无法展示具体内容,在数据库建立函数的代码如下:
一.解锁wmsys用户
alter user wmsys account unlock;
alter user wmsys  identified by 自定义密码;
二.创建包、包体和函数(使用wmsys用户)
以wmsys用户登录数据库,执行下面的命令

    CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
    -- AUTHID CURRENT_USER 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
    );
    /
     
    --定义类型body:
    CREATE OR REPLACE TYPE BODY 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;
    /
    --自定义行变列函数:
    CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2)
    RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;
    /


三.创建同义词并授权

    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
    /
---------------------
作者:wenzhongyan
来源:CSDN
原文:https://blog.csdn.net/wenzhongyan/article/details/43149757
版权声明:本文为博主原创文章,转载请附上博文链接!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|ly-sky.com

GMT+8, 2025-12-18 00:05 , Processed in 0.077532 second(s), 19 queries .

快速回复 返回顶部 返回列表