2011-12-24 14 views
1

私はJavaでプロデューサスレッドをnミリ秒ごとにOracleテーブルからアイテムを引き出しています。 現在の実装では、データを取得するためにJavaのタイムスタンプを使用し、再取得することはありません。同じPL/SQLクエリで選択して更新する

私の目的は、タイムスタンプパターンを取り除き、私がデータベースから引き出しているものと同じアイテムを直接更新することです。

「処理中」とマークするためにアイテムのセットを選択して同時に更新する方法はありますか?

もしそうでなければ、IN節に依存した別のUPDATEクエリが大きなパフォーマンスヒットになるでしょうか? 私はその目的のために一時テーブルを使用しようとしましたが、パフォーマンスに重大な影響を与えていることがわかりました。

役立つかどうかわかりませんが、アプリケーションはiBatisを使用しています。

+1

は、Oracle 10gので更新たstatmentsのためのRETURNING句がありますが、私は –

答えて

5

oracle 10g以上を使用している場合は、update文のRETURNING句を使用できます。複数の行を取得する場合は、BULK COLLECTステートメントを使用できます。
ここにいくつかの例へのリンクがあります。 http://psoug.org/snippet/UPDATE-with-RETURNING-clause_604.htm

+0

おかげできれいに見える、彼らはもっとして1行のために使用することができると確信しています。 iBatis/myBatisの使用方法に関するアイデアはありますか? – SiN

+0

JDBCとBULK COLLECTの通信方法がまだ見つかりません – SiN

関連する問題