Получение кода ошибки SQL при выполнении SELECT INTO - PullRequest
0 голосов
/ 21 января 2019

Я делаю select into внутри моего RPGLE.В процессе разработки все работало хорошо, но при развертывании на производстве он начал выдавать ошибку SQL.Ошибка SQL:

-579 (имя объекта типа объекта ПЫТАЕТСЯ ПРОЧИТАТЬ ДАННЫЕ, КОГДА ОПРЕДЕЛЕНИЕ ФУНКЦИИ ИЛИ ПРОЦЕДУРЫ НЕ УКАЗАЛ ЭТО ДЕЙСТВИЕ).

Обратите внимание, что TABLE1 (который также был изменен, добавлен поле для этого Запроса и перемещен в производство вместе с Программой) используется только в приведенном ниже утверждении и не объявлен в F-спецификации.

Пытался воссоздать это в среде разработки, но без удачи.Эта программа вызывается из нескольких программ, но они не создают журнал заданий для них.Стек вызовов всегда имеет хранимую процедуру в начале (Программа всегда вызывается из SP)

Я думаю, что это связано с некоторыми настройками в вызывающих программах.

Exec Sql Select WHS                            
           into :WHS1                         
           from Table1
           Where Company = :COMP
             and WHS = :WHSE;                     

1 Ответ

0 голосов
/ 22 января 2019

Эта программа вызывается из нескольких хранимых процедур. У некоторых из них есть Contains SQL.

CONTAINS SQL означает, что функция может содержать некоторый SQL, но она не читает и не записывает никакие данные, хранящиеся в базе данных через SQL. Примеры включают в себя SET. С CONTAINS SQL в хранимой процедуре, если вызываемая процедура пытается прочитать БД с помощью SQL, она завершается неудачно. Если у него нет CONTAINS SQL, то хранимая процедура будет принимать MODIFIES SQL DATA по умолчанию, и это не приведет к сбою.

...