【问题标题】:ORA-01086: savepoint 'L_SAVEPOINT' never established in this session or is invalidORA-01086: 保存点 'L_SAVEPOINT' 从未在此会话中建立或无效
【发布时间】:2019-08-13 05:39:38
【问题描述】:

在我的例子中,保存点是在 Java 中设置的,我正在尝试回滚一个 plsql 过程,该过程在 Java 中使用可调用语句调用。

中间没有提交或回滚,但我仍然看到错误:

ORA-01086:此会话中从未建立保存点“L_SAVEPOINT” 或无效

是不是因为保存点是在 Java 中设置的,而我试图在 plsql 中回滚? 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 如何从 java 设置保存点?向我们展示您的代码。
  • 你确定这都是在同一个会话中吗?并且中间没有 auto 提交(因为保存点和 PL/SQL 调用大概是对 DB 的两个单独调用)?
  • 看起来,java 和 plsql 过程被视为 2 个不同的事务。当我在 PL/SQL 过程中设置保存点并在过程中回滚时,问题得到了解决。
  • 很高兴为您工作。您可以使用评论中的信息回答您自己的问题,然后接受您的回答。这样做将帮助其他人找到一个好的解决方案。谢谢!

标签: oracle plsql savepoints


【解决方案1】:

Java 和 plsql 过程被视为 2 个不同的事务。当我在 PL/SQL 过程中设置保存点并在过程中回滚时,问题得到了解决。

【讨论】:

    【解决方案2】:

    只是对此有所了解,我的同事在控制事务时遇到了类似的问题,但我在存储过程中进行了提交。从 SP 中删除 Commit/Rollback,如果你想从 Java 控制事务,你应该已经准备好了。

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多