我正在调用存储过程,该过程是在DB2 for Z/OS中从Java创建的。
我想在不使用模式名称的情况下调用存储过程。
通过设置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
有人知道这是一个已知的问题还是我错过了什么?
请注意特殊寄存器(如当前函数路径(和jdbc连接/会话属性之间的区别。
在连接字符串中,可以使用特定语法指定特殊寄存器及其值。
特殊寄存器是";CURRENT_PATH";并且在这里定义语法。
连接字符串示例:
;specialRegisters=CURRENT_PATH=CURRENT CLIENT_USERID=x,SYSIBM;
其中,x是包含存储过程的架构。
您可以根据需要设置特殊寄存器的值,使用所有例程调用仔细测试它,尤其是在您有多模式设置的情况下。
您也可以在连接到数据库后设置特殊寄存器,只要您保留语法,尽管在这种情况下,它限制您每次为每个特殊寄存器设置一个值,除非您使用DB2DataSource.setSpecialRegisters
接口。有关详细信息,请参阅上面的链接。