背景: Oracle plsql のリファクタリングを行っています。私が達成したい最初の考えは、主成分の単体テストを行うことです。
このために、私はgem plsq-specでルビーを使用しています https://github.com/rsim/ruby-plsql-spec
テストを数回実行するために、データベース接続を開いた後にOracleセーブポイントを使用し、接続を閉じる前にセーブポイントにロールバックしています
問題: 一部のプロシージャに内部コミットがあったため、一部のテストを複数回実行できません。
内部コミット/ロールバックが発生した場合にセーブポイントを保持するには、Oracle で何ができますか?
この情報がノートにあると、どうやら私が望むことは不可能です http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/savepoint_statement.htm
単純なロールバックまたはコミットにより、すべてのセーブポイントが消去されます。セーブポイントにロールバックすると、そのセーブポイントより後にマークされたセーブポイントはすべて消去されます。ロールバックしたセーブポイントは残ります。
だから、唯一の解決策は?:
- 手順を変更する
- テストを実行する前にすべてのデータを消去しますか?
tks