我正在尝试在 IBM i (V5R4) 上创建一个外部存储过程,但是当我尝试运行它时出现错误。
我想要做的就是调用一个 RPG 程序,而不需要传递任何参数或担心返回任何数据。抱歉,我不是 RPG 程序员或 IBM i 专家,所以我可能会遗漏一些非常简单的内容。
用于创建过程的 SQL:
CREATE PROCEDURE SOMELIB.SOMEPROC ( )
LANGUAGE RPGLE
NOT DETERMINISTIC
NO SQL
EXTERNAL NAME 'OTHERLIB/SOMERG'
PARAMETER STYLE GENERAL;
执行 CALL SOMELIB.SOMEPROC() 时出现的错误是:
SQL 状态:38501
供应商代码:-443
消息:[CEE9901] 应用程序错误。 RNX1216 在语句 2100000001,指令 X'0000' 处不受 BB1002RG 监控。原因 。 . . . . : 应用程序异常结束,因为发生了异常并且没有被处理。未处理的异常被发送到的程序的名称是 SOMERG SOMERG 。程序在消息发送时的高级语言语句号处停止。如果显示多个语句号,则该程序是优化的 ILE 程序。优化不允许确定单个语句编号。如果 *N 显示为值,则表示实际值不可用。恢复 。 . . :查看之前列出的低级别消息以定位异常的原因。更正所有错误,然后重试请求。
最佳答案
您的过程正在调用 RPG 程序,但未设置库列表。您可以执行以下两项操作之一:
1) 更改 RPG 程序中的 F-spec 以使用 EXTFILE 关键字限定库。
2) 从存储过程中调用 CL 程序,该程序将适当的库添加到库列表中,确保考虑到该库可能已经存在于先前调用中的事实。然后让 CL 程序调用 RPG 程序。
关于stored-procedures - IBM i 上的外部存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1567887/