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発で解決するのですね。