【问题标题】:Abort insert ... select clause中止插入...选择子句
【发布时间】:2014-01-30 18:12:04
【问题描述】:

是否可以从 Java 中止 insert ... select 子句?使用 JDBC 或 Hibernate 都没有关系。数据库是 Oracle。

我认为这是不可能的,因为只有一个 DB 调用并且进程在 Oracle 中运行,而不是在 JVM 中。

【问题讨论】:

标签: java sql oracle hibernate


【解决方案1】:

Oracle OCI (C 驱动程序)提供OCIBreak() 函数。它甚至是线程安全的,您可以从任何 bg 线程调用它,而主线程使用相同的连接。

也许Statement.cancel() 做同样的事情。

OCIBreak() 需要往返 DB server (即网络必须正常运行),然后主线程收到错误:

java.sql.SQLException: ORA-01013: 用户请求取消当前操作

您应该能够在 JBOSS 级别上将此异常标记为非关键(使用 ExceptionSorter)。

PS: 我真的很好奇这是否可以从休眠中调用。由于 JPA 在我们的数据库服务器上留下了许多长时间运行的查询。

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多