>>941
プログラムによるけどまずストアドプロシージャのほうが早い。
んでJavaを利用して「なるべく高速に、かつ保守しやすい」プログラムならば次のステップがよいと思われる。

1 200万件をカーソルの先読み機能を利用して一気にメモリに読み込む。
2 カーソル閉じる。
3 更新SQLでPreparedStatementを作成する。
4 カウンタを準備する。
5 読み込んだ200万件がなくなるまでループ。
5.1 例外処理の開始。
5.2 業務処理を実行する。
5.3 PreparedStatementにパラメータをセットする。
5.4 PreparedStatement#addBatch()でバッチに追加。
5.5 カウンタを増やす。
5.6 カウンタが100件(100とか200とかは適当な数値で)を超えるまたは次の行が存在しないか?
5.6.1 PreparedStatement#executeBatch()を実行。
5.6.2 更新結果の件数が間違っているか?
5.6.2.1 ロールバック、プログラムの終了
5.6.3 コミット
5.7 例外の捕捉。
5.7.1 プログラムの終了またはバッチの続行