sve*_*ler 8 java oracle plsql transactions jdbc
我正在研究与遗留系统编写的Oracle PL/SQL集成的Java应用程序.不幸的是,我无法改变这个遗留系统.该系统的问题在于有时将COMMIT语句写入过程.但这导致我无法在我的应用程序级别上正确处理事务.
那么是否可以使oracle数据库过程忽略commit语句?
我发现当ALTER SESSION DISABLE COMMIT IN PROCEDURE在PL/SQL过程尝试提交时,在连接开始时进行 会导致异常.但是有可能让Oracle在不改变PL/SQL代码的情况下忽略提交吗?
小智 6
我认为你不能这样做.您必须向这些过程添加一个参数,例如"do commit",默认值为true.你用参数设置为false来调用它们.如果它们是嵌套的,则传递参数值.这样遗留代码的行为仍然相同,但您可以获得事务控制.
我现在已经在Oracle工作了9年.我还检查了有关您的问题的未记录的参数,我很确定,没有办法让Oracle忽略存储过程的提交.
但事实上,理论上你可以使用Oracle的闪回功能(例如闪回数据库或闪回表),将整个数据库或单个表重置为事务开始之前的状态.但请注意,这只能按照您的需要运行,如果您是唯一一个在闪回的对象上进行任何更改的人.这通常是不现实的.顺便说一下,您还需要考虑闪回功能不是为支持这种情况而设计的,因此在您需要闪回任何内容时,应用程序的性能将不是最理想的.但如果你别无选择,这可能是解决问题的一种方法.