PL/SQL で、主キーに基づいてあるテーブルから別のテーブルにデータを挿入するプロシージャを作成しました。私の手順は正常に機能していますが、主キーが既に存在する場合、MAIN テーブルの列 CODE_NUMBER を更新する方法がわかりません。
実際には、主キーがある場合はMAINテーブルの行を更新し、主キーが存在しない場合はREGIONSからデータを挿入する必要があります。
DECLARE
variable number;
id number;
description varchar2 (100);
CURSOR C1 IS
select regions.REGION_ID variable
from regions;
BEGIN
FOR R_C1 IN C1 LOOP
BEGIN
select regions.REGION_ID,regions.REGION_NAME
into id,description
from regions
where regions.REGION_ID = R_C1.variable;
----If exists then update otherwise insert
INSERT INTO MAIN( ID, CODE_NUMBER) VALUES( id,description);
dbms_output.put_line( id ||' '|| 'Already Exists');
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
dbms_output.put_line( R_C1.variable);
END;
END LOOP;
END;