DB2 不指定Schema调用存储过程失败 SQLCODE=-440, SQLSTATE=42884
admin
2023-05-21 08:42:40
0

■ 现象
DB2,Schema和访问DB的用户名不一致。
调用存储过程时必须指定Schema,否则Error。

DB2 不指定Schema调用存储过程失败 SQLCODE=-440, SQLSTATE=42884

■ 错误代码
存储过程

        SET SCHEMA = "QUOT";
        SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","DB2INST1";
        CREATE PROCEDURE COPY_TABLES (。。。。。。)
        BEGIN
                。。。。。。
        END;

        GRANT EXECUTE ON PROCEDURE "QUOT"."COPY_TABLES"(INTEGER, TIMESTAMP, INTEGER, INTEGER ) TO USER "DB2INST1" WITH GRANT OPTION;

Mapper.xml

        
                CALL COPY_TABLES (
                    #{userId, jdbcType=INTEGER, mode=IN}
                    , #{currentTime, jdbcType=TIMESTAMP, mode=IN}
                    , #{reasonTypeFlag, jdbcType=INTEGER, mode=IN}
                    , #{copyReason, jdbcType=INTEGER, mode=IN} )
        

Mapper.java

        /**
         * Copy Tables 
         *
         * @param param the parameter
         */
        void copyTables(Map param);

Service.java

        Map paramMap = new HashMap();
        paramMap.put("userId", userId);
        paramMap.put("currentTime", currentTime);
        paramMap.put("reasonTypeFlag", 1);
        paramMap.put("copyReason", 1);
        Mapper.copyQuotationTables(paramMap);

Tomcat context.xml

    

■ 正确代码
Tomcat context.xml中追加currentFunctionPath。

    

如果想在DB工具(如:Toda)中调用存储过程,但不指定Schema,
如:CALL COPY_TABLES(。。。。。。)
需要在创建存储过程时,指定Current Path

SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","DB2INST1","QUOT";

■ 原因
DB2存储过程(和函数)不受CURRENT SCHEMA控制,而是由CURRENT PATH控制。

相关内容

热门资讯

小米澎程72小时一线预售快报出... 来源:CNMO科技 【CNMO科技消息】8月3日,CNMO科技注意到,车fans创始人@孙少军发布了...
海评面:“中国商业航天正以惊人... 7月22日,引力一号遥四运载火箭在上海东部海域点火升空。(图/新华社) “中国商业航天领域正以惊人的...
第三届雷达学术前沿大会在长沙举... 中新网长沙8月2日电(王曼)8月2日,第三届雷达学术前沿大会在长沙启幕,雷达及相关领域8位院士,12...
埃及、卡塔尔和土耳其发表联合声... △加沙地带(资料图)当地时间3日,埃及、卡塔尔和土耳其三国发表联合声明,强烈谴责以色列在加沙地带持续...
鹤壁市汽车电子电气行业技术宣讲... 为助推我市汽车电子电器产业智能化、数字化和绿色化转型升级。7月30日,由市工商联、市汽车电子电器商会...
原创 i... 新一代系统陆续推出,多方面进行升级,尤其是UI设计、AI智能体、流畅度等方面,助力新一代旗舰机全面发...
国产最强AI再次选择开源!阿里... IT之家 8 月 3 日消息,阿里巴巴千问 Qwen3.8-Max 人工智能模型今日(8 月 3 日...
特朗普:在伊朗战争期间,石油公... 美国有线电视新闻网(CNN)8月3日报道,特朗普周一表示,由于与伊朗战争相关的油价飙升,雪佛龙和埃克...
特朗普:与伊朗的谈判将分两阶段... △当地时间8月3日,美国总统特朗普在白宫回答记者提问。当地时间8月3日,美国总统特朗普在白宫回答记者...
汇艺银河里首届微醺节圆满收官 ... 多元业态协同联动,探索郑东商圈夜间消费新场景首届汇艺银河里微醺节圆满收官。活动立足郑州高铁东站商圈核...