【发布时间】:2019-08-23 09:30:12
【问题描述】:
在绿屏会话中,当我的库列表设置为 QGPL、QTEMP、VENDRLIB1、VENDRLIB2、VENDRLIB3 时,调用程序 MYLIB/TESTPRG 可以工作。我可以在绿屏命令行上执行call MYLIB/TESTPRG。
我希望能够从我的 Windows 客户端运行此命令。正如我在各种文章中看到的那样,我创建了一个外部存储过程 MYLIB/TESTPROC,外部名称为 MYLIB/TESTPRG。我最初的问题表明,我可以在 STRSQL 中使用我的库列表在绿屏会话中成功执行此过程,但这是错误的。这没用。它只是说“触发程序或外部例程检测到错误”。抱歉信息有误。
当从客户端 (CALL MYLIB/TESTPROC) 调用 MYLIB/TESTPROC 时,它会失败并显示 CPF9810(找不到库 &1)。我通过 i Navigator -> Run SQL Scripts 连接到数据库。在 Connection -> JDBC Settings 我有 Default SQL schema = 'Use library list of server job' 并设置 Schema list=QGPL,QTEMP,VENDRLIB1,VENDRLIB2,VENDRLIB3。然后我执行CALL MYLIB/TESTPROC 并收到如上所述的消息。
当我运行程序时起作用,即在绿屏命令行上CALL MYLIB/TESTPRG。
TESTPRG 是一个不带参数的 C 程序。存储过程是这样定义的:
CREATE PROCEDURE MYLIB/TESTPROC
LANGUAGE C
SPECIFIC MYLIB/TESTPROC
NOT DETERMINISTIC
NO SQL
CALLED ON NULL INPUT
EXTERNAL NAME 'MYLIB/TESTPRG'
PARAMETER STYLE GENERAL ;
【问题讨论】:
-
在 IBM Data Studio 中有一个屏幕,您可以在其中设置库列表。我将其设置为与 i Navigator 完全相同,但出现相同的错误。在这两种情况下,我都知道正在使用库列表,因为如果我删除了其中一个必要的库,那么运行时错误将是找不到给定的对象。
-
请注意,到目前为止,我并没有尝试从我自己的代码中调用该过程。我尝试了两个由 IBM 开发的命名查询工具。另外,我的过程没有参数。
-
为什么不在调用 CALL PGM(MYLIB/TESTPROC) 中添加库?
-
该消息未指定未找到的库的名称。顺便说一句,TESTPROC 是一个存储过程。
-
我最初的问题是存储过程在 STRSQL 中工作。它没有。我的问题是,正如我在示例中看到的那样,通过外部 sproc 调用程序对我不起作用。我已经相应地更新了问题。
标签: db2 ibm-midrange db2-400