2014-01-22 4 views
0

У меня есть хранимая процедура, где в конце я проверяю наличие ошибок, и если есть ошибки, я выполняю откат, а затем обновляю статус в таблице пакетов до «FAILED». Когда я запускаю хранимую процедуру, я регулярно получаю ошибку SQLCODE 818, говоря о наличии «конфликта временной метки».Ошибка хранимой процедуры db2 при выполнении инструкции обновления после отката

Когда я удаляю инструкцию обновления, которая изменяет статус в таблице пакетов, я не получаю ошибку.

Какова наилучшая практика для выполнения этих действий, чтобы я не получал ошибку?

Раздел кода выглядит следующим образом:

IF v_error_count > 0 THEN           
    -- Batch failed  
    ROLLBACK;  

    UPDATE batch_table bt 
    SET bt.batch_status = 'FAILED' 
    WHERE batch_id = input_batch_id;   

END IF; 

Спасибо за любую помощь.

+0

Какой уровень изоляции используется? возможно, другой процесс одновременно изменяется. – AngocA

ответ

0

SQL Code -818 указывает, что внутренняя временная метка DB2, используемая для обеспечения согласованности между работающим модулем, соответствует версии DBRM, созданной при предварительном скомпилировании SQL-заявлений.

Возможно, вы можете связаться с вашим администратором баз данных (или кем-то еще на своем сайте), поскольку конкретные действия, которые вы должны выполнить, могут отличаться. Для общего обзора вы можете увидеть this article в IBM Knowledge Center.

Смежные вопросы