電子書籍の厳選無料作品が豊富!

お世話になります。
ORACLEでUPDATEに失敗(抽出条件に一致するレコード無し)した後、同一テーブルのレコードを再検索するとSQLExceptionが発生してしまいます。原因、対策をご存知の方がおられましたら、ご教授ください。よろしくお願い致します。
(1)table_1からFieldAの値を取得する。(ここでは"001"だったとする)
select FieldA from table_1 where FieldB='XXX';
(2)FieldAから取得した値を変更する("001"から"002"に変更)
その他諸々の業務処理を行う
(3)update table_1 set FieldA='002' where FieldB='XXX' and FieldA='001';
(4)更新がOKだったら処理終了。
(5)同一レコードのFieldAの値を他のプロセスが既に更新済みだった場合、update件数が0となるので、
(1)からリトライを行う。
⇒この時、(1)の再検索でResultsetのexecuteQueryの後、next()メソッドで「ORA-01002: フェッチ順序が無効です。」となってしまいます。

A 回答 (1件)

(1)と(3)のStatement、Resultsetオブジェクトを使い回しているのではないですか?


参照用と更新用で分けて下さい。
また、(1)からリトライする直前(ループの終端)に必ずStatement、Resultsetをclose()する様にして下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!