首页 > 解决方案 > currentFunctionPath 属性不适用于我的 Java 存储过程

问题描述

我正在从 Java 调用在 DB2 for Z/OS 中创建的存储过程。

我想在不使用模式名称的情况下调用存储过程。

我没有通过设置currentSchema数据源属性为所有其他 SQL 使用模式名称。

我开始知道对于存储过程,我必须设置currentFunctionPath属性。但这不起作用。我遇到了以下异常:

Caused by: com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=DB2T.MYSCHEMA.SYSSTAT.5359534C564C3031;DISTSERV;04, DRIVER=4.24.92

我使用的 Db2 驱动程序:compile(group: 'com.ibm.db2.jcc', name: 'db2jcc4', version: '4.24.92') DB2 版本:12

有人知道这是一个已知问题还是我错过了什么?

标签: db2db2-zos

解决方案


请注意特殊寄存器 (例如当前函数路径)和 jdbc 连接/会话属性之间的区别。

在您的连接字符串中,您可以使用特定语法指定特殊寄存器及其值。

特殊寄存器是“CURRENT_PATH”,语法在这里定义。

连接字符串的示例:

...;specialRegisters=CURRENT_PATH=CURRENT CLIENT_USERID=x,SYSIBM;

其中 x 是包含您的存储过程的架构。

您可以根据需要设置特殊寄存器的值,并在所有例行调用中仔细测试它,尤其是在您有多模式设置的情况下。

您也可以在连接到数据库后设置特殊寄存器,只要您保留语法,尽管在这种情况下它限制您一次为每个特殊寄存器设置一个值,除非您使用DB2DataSource.setSpecialRegisters接口。有关详细信息,请参阅上面的链接。


推荐阅读