首页 > 解决方案 > 执行 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;                     

标签: ibm-midrangerpgle

解决方案


这个程序是从多个存储过程中调用的。其中一些有一个Contains SQL

CONTAINS SQL表示该函数可能包含一些 SQL,但它不会通过 SQL 读取或写入存储在数据库中的任何数据。示例包括 SET。在CONTAINS SQL存储过程中,如果该过程或它调用的过程尝试使用 SQL 读取数据库,那么它会失败。如果没有CONTAINS SQL,则存储过程将MODIFIES SQL DATA默认采用并且不会失败。


推荐阅读