Oracle 9i以降ならMERGE文
余談なのですけど。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj09_1.htm
・問い合わせ結果で、追加、更新が行える。 いわゆるマッチングやマージ処理が簡単に行えて便利かも。 次の例では、受注m の品番毎受注数計を品番m に品番が存在すれば、累積 更新し、存在しなければ追加している。 あまり良い例ではないが、雰囲気はつかめます。 merge into 品番m a using (select 品番, sum(受注数) 受注数 from 受注m group by 品番) b on (a.品番 = b.品番) when matched then update set a.受注数 = a.受注数 + b.受注数 when not matched then insert (品番, 受注数) values (b.品番, b.受注数) ;
「該当レコードがあれば更新、なければ挿入」という動きをしてくれます。
これがあれば1発で解決するのですね。