2016-11-04 31 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端的連接/語句超時設置。