- 締切済み
PL/SQLプログラムの書き方がわかりません。
「課題」2つのデータベースがあり、それぞれ別インスタンス。A―DBからB―DBに、データを抽出し、もっていきます。このとき、キーとなるデータが、Bに既にある場合は、UPDATEを、ない場合はINSERTします。 プログラムの流れは、LOOP FETCH でAから取り出すSELECT文につけられたカーソルを実行し、次に SELECT文で、Bからキーとなるデータがあるか検索して、それで、IF文で、なかったときは、INSERT、あるときはUPDATE だと思うのですが・・・書き方がいまいちわかりません。どなたか、サンプルになるようなプログラムがございましたら、教えていただけませんでしょうか?まったくの素人なのですが、この課題をしなければいけません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ。 こんな感じでどうでしょう? 件数を確認しなくても、大丈夫ですょ。 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; /
- peugeot307
- ベストアンサー率22% (29/130)
Oracleのバージョンは? 9iならMERGE文が使えると思います。