首页 > 分享 > DB2 不指定Schema调用存储过程失败 SQLCODE=

DB2 不指定Schema调用存储过程失败 SQLCODE=

最新推荐文章于 2023-06-29 13:53:24 发布

weixin_33726943 于 2018-05-11 15:53:45 发布

■ 现象
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

<update id="copyTables" statementType="CALLABLE" parameterType="map">

CALL COPY_TABLES (

#{userId, jdbcType=INTEGER, mode=IN}

, #{currentTime, jdbcType=TIMESTAMP, mode=IN}

, #{reasonTypeFlag, jdbcType=INTEGER, mode=IN}

, #{copyReason, jdbcType=INTEGER, mode=IN} )

</update>

Mapper.java

/**

* Copy Tables

*

* @param param the parameter

*/

void copyTables(Map<String, Object> param);

Service.java

Map<String, Object> paramMap = new HashMap<String, Object>();

paramMap.put("userId", userId);

paramMap.put("currentTime", currentTime);

paramMap.put("reasonTypeFlag", 1);

paramMap.put("copyReason", 1);

Mapper.copyQuotationTables(paramMap);

Tomcat context.xml

<Resource name="jdbc/testDS" auth="Container" type="javax.sql.DataSource"

driverClassName="com.ibm.db2.jcc.DB2Driver"

url="jdbc:db2://127.0.0.1:50000/test:currentSchema=QUOT;"

username="db2" password="db2" maxActive="100" maxIdle="30"/>

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

<Resource name="jdbc/testDS" auth="Container" type="javax.sql.DataSource"

driverClassName="com.ibm.db2.jcc.DB2Driver"

url="jdbc:db2://127.0.0.1:50000/test:currentSchema=QUOT;currentFunctionPath=QUOT;"

username="db2" password="db2" maxActive="100" maxIdle="30"/>

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

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

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

转载于:https://blog.51cto.com/13685327/2115291

相关知识

XML基本解析
Java项目如何调用支付接口
Project1
Kafka数据安全性、运行原理、存储
Hive在load时是不检查数据是否符合schema的,Hive遵循的是sche
图解大数据
Android PayPal支付的接入和SDK支付过程解析
【蓝蓝高频面试之数据库系列】第一期数据库基础20题
​第十击
SDL:安全性非功能需求识别表

网址: DB2 不指定Schema调用存储过程失败 SQLCODE= https://m.huajiangbk.com/newsview1095233.html

所属分类:花卉
上一篇: 浮点型数据在计算机中存储
下一篇: Python 文件读取与存储