• 締切済み

PL/SQLプログラムの書き方がわかりません。

「課題」2つのデータベースがあり、それぞれ別インスタンス。A―DBからB―DBに、データを抽出し、もっていきます。このとき、キーとなるデータが、Bに既にある場合は、UPDATEを、ない場合はINSERTします。 プログラムの流れは、LOOP FETCH でAから取り出すSELECT文につけられたカーソルを実行し、次に SELECT文で、Bからキーとなるデータがあるか検索して、それで、IF文で、なかったときは、INSERT、あるときはUPDATE だと思うのですが・・・書き方がいまいちわかりません。どなたか、サンプルになるようなプログラムがございましたら、教えていただけませんでしょうか?まったくの素人なのですが、この課題をしなければいけません。よろしくお願いします。

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 こんな感じでどうでしょう? 件数を確認しなくても、大丈夫ですょ。 Insert されるケースが多いのであれば、Exception を使用して下さい。 declare  cursor curs is select * from emp where ~; begin  for vRec in curs loop   -- 取りあえず主キーでUpdate   update emp@dblink set f2 = vRec.f2, f3 = vRec.f3    where f1 = vRec.f1   -- 更新件数が0件だったらInsert   if SQL%ROWCOUNT = 0 then    insert into emp@dblink (f1,f2,f3)     values (vRec.f1, vRec.f2, vRec.f3);   end if;  end loop; end; /

回答No.1

Oracleのバージョンは? 9iならMERGE文が使えると思います。