中止插入...选择子句

时间:2014-01-30 18:12:05

标签: java sql oracle hibernate

是否可以从Java中止插入... select子句?使用JDBC或Hibernate,无所谓。数据库是Oracle。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  

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

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

PS:如果可以从hibernate中调用它,我真的很好奇。由于JPA在我们的数据库服务器上留下了许多长时间运行的查询。