【问题标题】:currentFunctionPath property is not working for my stored procedure from JavacurrentFunctionPath 属性不适用于我的 Java 存储过程
【发布时间】:2020-12-02 10:06:36
【问题描述】:

我正在从 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

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

【问题讨论】:

    标签: db2 db2-zos


    【解决方案1】:

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

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

    特殊寄存器是“CURRENT_PATH”,语法定义为here

    连接字符串示例:

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

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

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

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

    【讨论】:

    • 连接字符串是在自定义框架内创建的。它需要更改此自定义库。但是我们可以设置数据源属性。这就是为什么我正在寻找数据源属性的方式。顺便说一句,为什么 currentFunctionPath 不起作用?
    • 按照答案中链接中的说明进行操作。特殊寄存器与常规属性分开处理。
    • 您的链接正在谈论 Drivermanager 连接。我的问题是为什么 currentFunctionPath 属性不适用于我的数据源ibm.com/support/producthub/db2/docs/content/SSEPGG_11.5.0/…
    • 可能是因为该属性与 Db2-LUW 相关,但与 Db2-for-Z/OS 特殊寄存器无关。
    • currentFunctionPath 工作了!!!..由于我的自定义框架,它没有正确设置
    猜你喜欢
    • 2011-01-23
    • 2015-11-11
    • 1970-01-01
    • 2021-09-04
    • 2011-09-16
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 2011-09-21
    相关资源
    最近更新 更多