ibm-midrange - 执行 SELECT INTO 时获取 SQL 错误代码
问题描述
我正在select into
我的RPGLE里面做一个。它在开发中运行良好,但在部署到生产环境时开始给我一个 SQL 错误。SQL错误是:
-579(当函数或过程的定义未指定此操作时,尝试读取数据的对象类型对象名称)。
请注意,TABLE1(也已更改,为此请求添加了一个字段,并与程序一起移至生产环境)仅在以下语句中使用,而不在 F-spec 中声明。
试图在开发环境中重新创建它,但没有运气。该程序是从多个程序中调用的,但它们不会为这些程序创建作业日志。调用堆栈的开头总是有一个存储过程(程序总是从一个 SP 调用)
我认为这可能与调用程序中的某些设置有关。
Exec Sql Select WHS
into :WHS1
from Table1
Where Company = :COMP
and WHS = :WHSE;
解决方案
这个程序是从多个存储过程中调用的。其中一些有一个Contains SQL
。
CONTAINS SQL
表示该函数可能包含一些 SQL,但它不会通过 SQL 读取或写入存储在数据库中的任何数据。示例包括 SET。在CONTAINS SQL
存储过程中,如果该过程或它调用的过程尝试使用 SQL 读取数据库,那么它会失败。如果没有CONTAINS SQL
,则存储过程将MODIFIES SQL DATA
默认采用并且不会失败。