避免在DB2 / 400存储过程中进行硬编码模式

时间:2018-09-06 16:29:58

标签: stored-procedures db2-400 jt400

我正在创建存储过程以替换IBM i的旧版应用程序。我正在从Java Web App调用存储过程。我正在使用jt400 JDBC驱动程序

我的JDBC URL是jdbc:as400://myhost/;libraries=*LIBL,MYLIB;prompt=false

存储过程可以调用存储过程

如果不进行进一步的存储过程调用,则初始存储过程调用将正常完成

如果存储过程调用了其他存储过程,它将失败并

com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] MY_SP in MYLIB type *N not found.

如果我在存储过程的调用语句中对模式进行硬编码,则调用将正常完成。

我想让被调用的存储过程使用与调用方相同的模式

2 个答案:

答案 0 :(得分:0)

您需要SET PATH = "MYLIB"

当我使用SQuirreL调用存储过程时,我需要使用SET PATH语句来获取它以查找存储过程。我不知道这是因为我的库列表坏了还是什么,但是当前的架构并未用于查找不合格的存储过程。

答案 1 :(得分:0)

我实际上也遇到了同样的问题,存储过程使用了您的职位描述库列表。您需要进行编辑以使用TAATOOL CHGLBLJOBD。我目前不在iSeries的前面,但我相信命令是EDTJOBDLIBEDTJOBDLIBL WRKJOBDLIBL。这是一些变化。