- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracleのプロシージャについて)
Oracleのプロシージャについて
このQ&Aのポイント
- Oracleのプロシージャについて教えてください。
- AテーブルとBテーブルのデータ置換を行うためのプロシージャを作成しています。
- 通常のUpdate文では時間がかかるため、皆さんはどのような手法を用いているのか教えてください。
- みんなの回答 (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; /
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.1
update A set Col3=(select ColC from B where Col2=ColB) where exist ( select 1 from B where Col2=ColB ) ; のような1文で処理したらダメなんですかね? 索引の有無や更新の対象量など、不明な点が多いので、 何が合理的な方法なのか答えにくいんですが。
質問者
お礼
ありがとうございます。 Loopdで取得した情報を基にして、一度Selectを切って取得した値で UpDateの処理を行っていました。 教えて頂いた方法で試してみます。
質問者
補足
更新対象は40万件全てになります。
お礼
ご丁寧に記載して頂きありがとうございます。 5000件ずつで上記のやり方もあるんですね。 勉強になります。 試してみたいと思います、ありがとうございます。