Create or replace procedure MoveDataFromAToB
is
--定义变量--
p_braid varchar2(40);
p_merid varchar2(40);
--定义指针--
cursor cur_data_AAA
is
select braid, merid from aaa_test;
begin
--遍历指针游标
for rec_data_AAA in cur_data_AAA
loop
--初始化变量--
p_braid :=null;
p_merid :=null;
begin
--当目的表中存在该主键时,将游标的值赋给变量--
select braid, merid
into p_braid,p_merid
from bbb_test
where braid=rec_data_AAA.braid;
exception
when others then
--异常处理,说明目标表中没有该主键,将变量初始化为空值--
p_braid :=null;
p_merid :=null;
end;
--当目标表中存在该主键时,暂时做标记处理--
if p_braid is not null then
if rec_data_AAA.merid=p_merid then
update aaa_test
set aaa_test.payid='U'
where aaa_test.p_braid=rec_data_AAA.p_braid;
else
update bbb_test
set bbb_test.merid=rec_data_AAA.merid
where aaa_test.braid=rec_data_AAA.p_braid;
end if;
--当目的表中不存在该主键时,进行插入--
else
insert into bbb_test(braid, merid) values(rec_data_AAA.braid,rec_data_AAA.merid);
update aaa_test
set aaa_test.payid='N'
where aaa_test.braid=rec_data_AAA.p_braid;
end if;
commit ;
end loop;
exception
when others then
rollback;
end MoveDataFromAToB;