2

背景: 我正在做一些 Oracle plsql 重构;我想要完成的第一个想法是对主要组件进行单元测试。

为此,我将 ruby​​ 与 gem plsq-spec https://github.com/rsim/ruby-plsql-spec一起使用

为了多次执行测试,我在打开数据库连接后使用 Oracle Savepoints,并在关闭连接之前回滚到保存点

问题: 一些测试不能执行超过一次,因为一些过程有内部提交。

如果发生内部提交/回滚,我可以在 Oracle 中做什么以保留保存点?

有了注释中的这些信息,我想要的显然是不可能的 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/savepoint_statement.htm

一个简单的回滚或提交会擦除所有保存点。当您回滚到某个保存点时,该保存点之后标记的所有保存点都将被删除。您回滚到的保存点仍然存在。

那么,唯一的解决方案是?:

  • 修改程序
  • 在执行测试之前擦除所有数据?

tks

4

1 回答 1

4

闪回功能在这里可以帮助您,因为您可以将数据库或单个表恢复到其上一个时间点的状态。

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9012.htm

于 2012-11-06T17:07:13.180 回答