oracle 存储过程 条件表复制

本文详细介绍了如何通过自定义存储过程`MoveDataFromAToB`,实现从表AAA_test到表BBB_test的数据迁移。过程中涉及了变量初始化、游标遍历、异常处理及数据更新/插入逻辑,确保迁移过程既高效又安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值