• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracleのプロシージャについて)

Oracleのプロシージャについて

このQ&Aのポイント
  • Oracleのプロシージャについて教えてください。
  • AテーブルとBテーブルのデータ置換を行うためのプロシージャを作成しています。
  • 通常のUpdate文では時間がかかるため、皆さんはどのような手法を用いているのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

こんな感じではだめですか? begin loop update テーブルA set カラム3 = ( select カラムc from B where テーブルA.カラム2=テーブルB.カラムB ) where exists ( select 1 from テーブルB where テーブルA.カラム2=テーブルB.カラムB ) and rownum <= 5000; commit; exit when (sql%rowcount < 5000); end loop; end; /

izaizayoiyoi
質問者

お礼

ご丁寧に記載して頂きありがとうございます。 5000件ずつで上記のやり方もあるんですね。 勉強になります。 試してみたいと思います、ありがとうございます。

その他の回答 (1)

回答No.1

update A set Col3=(select ColC from B where Col2=ColB) where exist ( select 1 from B where Col2=ColB ) ; のような1文で処理したらダメなんですかね? 索引の有無や更新の対象量など、不明な点が多いので、 何が合理的な方法なのか答えにくいんですが。

izaizayoiyoi
質問者

お礼

ありがとうございます。 Loopdで取得した情報を基にして、一度Selectを切って取得した値で UpDateの処理を行っていました。 教えて頂いた方法で試してみます。

izaizayoiyoi
質問者

補足

更新対象は40万件全てになります。