IBM 扩展

ROLLBACK 语句

ROLLBACK 语句提供了一种在更改不应保持永久状态时取消对数据库记录的一个或多个更改的方法。

ROLLBACK 语句-格式

读取语法图跳过可视语法图ROLLBACK

执行 ROLLBACK 语句时,将从数据库中除去自上次落实边界以来对落实控制下的文件所作的任何更改。 请注意,当为 OUTPUT 打开文件时,执行 ROLLBACK 语句不会将清除的记录复原到该文件。

落实边界是先前出现的 ROLLBACK 或 COMMIT 语句。 如果未发出 COMMIT 或 ROLLBACK ,那么落实边界是落实控制下文件的第一个 OPEN。 更改的删除适用于所有受承诺控制的文件,而不仅仅适用于发出 ROLLBACK 的 COBOL 程序中受承诺控制的文件。

成功执行 ROLLBACK 后,将释放在落实控制下对文件挂起的所有记录锁定,并且这些记录可供其他作业使用。 可以在作业级别或激活组级别对落实控制进行作用域限定。 (缺省情况下,落实控制的作用域限定在激活组级别。)

ROLLBACK 对不受落实控制的文件没有影响。 如果执行了 ROLLBACK 并且在落实控制下没有文件,那么将忽略 ROLLBACK。

可以打开或关闭处于落实控制下的文件,而不影响自上次落实边界以来所作的更改的状态。 仍必须发出 COMMIT 以使更改成为永久更改。 ROLLBACK 在执行时使文件处于与执行前相同的打开或关闭状态。

ROLLBACK 语句 :
  • 修改任何文件的 I-O-FEEDBACK 区域
  • 设置任何文件的文件状态值。
对于 ROLLBACK 语句,以下注意事项适用:
  • ROLLBACK 语句将文件位置指示符设置为其在先前落实边界的位置。 如果要执行顺序处理,请务必记住这一点。
  • 如果自文件打开以来未发出 COMMIT 语句,那么 ROLLBACK 语句会将文件位置指示符设置为其在 OPEN 的位置。
  • 如果在未落实更改的情况下关闭了文件,那么在 ROLLBACK 之后未定义文件位置指示符。

如果在作业级别限定了落实控制的作用域,那么将在每个作业结束时对落实控制下的所有文件自动执行未落实记录的隐式 ROLLBACK。 将取消对数据库的任何未落实的更改。

如果在激活组级别限定了落实控制的作用域,那么在激活组正常结束时将发生隐式落实。 如果激活组异常结束,那么将发生隐式 ROLLBACK。

有关承诺控制的更多信息,请参阅 IBM® Rational® Development Studio for i :ILE COBOL 程序员指南

IBM 扩展结束