2016-11-04 30 views
-1

以下delete语句在SQL开发人员中工作正常,但在使用JDBC API执行时executeUpdate()不起作用。Java JDBC executeUpdate不起作用删除SQL,其中TRUNC函数在where子句中

删除where子句其工作正常。

Delete from Tab1 
where TRUNC(CREATED_TS) <= TRUNC(ADD_MONTHS(SYSDATE,-3)) 

我无法弄清楚这个问题,因为没有异常或错误是printed.Only代码执行在方法executeUpdate()得到忌用。

数据库:的Oracle 11g 的Java:1.6

+0

你怎么在数据库中看到了什么?数据库会话是否活动?它阻碍了什么?什么阻止了? –

+0

不......我已经在我的帖子中提到过,我不能提供很多信息,因为我没有任何错误/ stacktrace –

+0

向我们展示您的Java代码。如果您已经从SQL Developer中删除了这些行,那么当您的应用程序运行时,该语句不再会删除某些内容,这并不令人惊讶。 –

回答

0

的问题是不是与删除SQL.The问题是,在其中有中,从Java代码删除SQL是越来越无限期挂一些未提交changes.Because另一个会话。在另一个会话上发出提交时,java api executeUpdate()响应并开始正常工作。

的问题是类似的问题,因为在下面的链接:

Oracle database is hanging infinitly in UPDATE queries

0

由于没有异常或堆栈跟踪一个只能猜测。

  1. 可能是Java代码中吞噬了异常。看看这个,如果可能的话打印它。

  2. where TRUNC(CREATED_TS) <= TRUNC(ADD_MONTHS(SYSDATE,-3))将阻止CREATED_TS上的索引(如果有的话)被使用并且可能会减慢进程速度。并且可能发生超时。我会检查安装程序的Java端的连接/语句超时设置。