0

我有一个存储过程,最后我检查错误,如果有错误,我执行回滚,然后将批处理表上的状态更新为“失败”。当我运行存储过程时,我经常收到 SQLCODE 818 错误,提示“发生时间戳冲突”。

当我删除更改批处理表状态的更新语句时,我没有收到错误消息。

执行这些操作的最佳做​​法是什么以避免出现错误?

代码部分如下所示:

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;

谢谢你的帮助。

4

1 回答 1

0

SQL 代码-818指示 DB2 用于确保运行模块之间的一致性的内部时间戳与预编译 SQL 语句时创建的 DBRM 版本相匹配。

您可以咨询您的 DBA(或您站点的其他人),因为您必须执行的具体步骤可能会有所不同。有关一般概述,您可以查看IBM Knowledge Center 上的这篇文章

于 2014-01-22T17:05:58.003 回答