是否可以从Java中止插入... select子句?使用JDBC或Hibernate,无所谓。数据库是Oracle。
我认为这是不可能的,因为只有一个数据库调用,并且该进程在Oracle中运行,而不是在JVM中运行。
答案 0 :(得分:1)
Oracle OCI(C驱动程序)提供OCIBreak()
功能。它甚至是线程安全的,你可以从任何bg线程调用它,而主线程使用相同的连接。
也许Statement.cancel()
做同样的事情。
此OCIBreak()
需要往返DB服务器(即网络必须正常运行),然后主线程收到错误:
java.sql.SQLException:ORA-01013:用户请求取消当前操作
您应该能够在JBOSS级别将此异常标记为非关键(使用ExceptionSorter
)。