2016-11-04 11 views
-1

次のdelete文はSQL開発者では問題なく動作しますが、JDBC APIを使用して実行するとexecuteUpdate()は機能しません。Java JDBC executeUpdateが機能しないwhere節のTRUNC関数を使用したSQLの削除

where句を削除した後、正常に動作します。私も例外やエラーなどの問題を把握することはできませんよ

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

はprinted.Onlyコード実行がのexecuteUpdate()メソッドで絞首刑になっているです。

データベース:Oracle 11gの Javaは:1.6

+0

あなたは、データベースに何を見ていますか?データベースセッションはアクティブですか?それは何かをブロックしていますか?何がブロックされていますか? –

+0

いいえ...私はすでに私のpost.Iで私は何もエラー/ 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だけを推測することができます。

  1. おそらく例外がJavaコードで飲み込まれている可能性があります。それを見て、可能であれば印刷してください。

  2. where TRUNC(CREATED_TS) <= TRUNC(ADD_MONTHS(SYSDATE,-3))は、CREATED_TS(存在する場合)のインデックスが使用されないようにし、プロセスを遅くする可能性があります。タイムアウトが発生した可能性があります。私はセットアップのJava側で接続/ステートメントのタイムアウト設定をチェックします。

関連する問題