我正在RPGLE中做一个select into
。它在开发中运行良好,但在部署到生产环境时开始给我一个 SQL 错误。SQL 错误是:
-579(对象类型对象名称 当函数或过程的定义未指定此操作时尝试读取数据)。
请注意,表1(也为此请求更改,添加了一个字段,并与程序一起移至生产)仅在以下语句中使用,未在 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
,并且不会失败。