Когда PREPARE QUERY терпит неудачу в PRO C?

Когда PREPARE QUERY терпит неудачу в PRO C?

EXEC SQL AT :db_id PREPARE QUERY FROM :sql_query;

bool sql_status = (sqlca.sqlcode == OERR_ORACLE_SUCCESS);

if (sql_status)
{
}
else
{
}

У меня не было этой проблемы до недавнего времени. Код работал нормально, ПОДГОТОВКА ЗАПРОСА работает нормально (переходя в цикл if_, но внезапно он не работает и после этого не работает (переход в цикл else).

Ничего не изменилось и это тот же бинарник.

Кто-нибудь сталкивается с подобной проблемой в прошлом?


person Naren    schedule 14.10.2016    source источник
comment
Я предполагаю, что вы, возможно, захотите взглянуть на значение sql_query, поскольку оно динамически готовится к этому.   -  person Jim Wartnick    schedule 24.10.2016


Ответы (1)


В прошлом я написал МНОГО pro*c и со временем понял, что вы не хотите проверять код возврата оператора PREPARE, поскольку он никогда не возвращает никакого значения. Вот что я имею в виду:

Значение PREPARE sqlca.sqlcode — это код возврата инструкции, которая выполнялась непосредственно ДО инструкции PREPARE. Другими словами, если вы проверите выходные данные инструкции PREPARE и инструкции, которая была выполнена непосредственно перед ошибкой инструкции PREPARE, то код возврата подготовки окажется ошибочным. Если предыдущая инструкция выполнена успешно, то PREPARE, по-видимому, выполнена успешно.

Другими словами, значение prepare sqlca.sqlcode практически ничего не значит (само по себе оно никогда не дает сбоев). Так что, если PREPARE теперь дает сбой, проверьте оператор, который выполнялся непосредственно перед оператором PREPARE, и убедитесь, что вы проверяете значение sqlca.sqlcode этого оператора. Могу поспорить, что предыдущее утверждение не работает, и возвращаемая ошибка связана с этим утверждением. Есть смысл?

-Джим

person Jim Wartnick    schedule 24.10.2016
comment
спасибо за ваш ответ, я рассмотрю проблему, имея это в виду. - person Naren; 27.10.2016
comment
Но есть ли у вас официальная страница или документация, подтверждающая вашу точку зрения? заранее спасибо. - person Naren; 27.10.2016