• 締切済み

JDBCでテーブルUPDATE後の再検索でエラー

お世話になります。 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: フェッチ順序が無効です。」となってしまいます。

みんなの回答

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

(1)と(3)のStatement、Resultsetオブジェクトを使い回しているのではないですか? 参照用と更新用で分けて下さい。 また、(1)からリトライする直前(ループの終端)に必ずStatement、Resultsetをclose()する様にして下さい。