2020-12-23

Oracle 如何循环查询结果集,进行新增或修改
Oracle的PL/SQL中怎样循环查询的结果集,然后根据查询结果进行判断,是新增或修改操作

loop循环例子

for item in (select a,b,c from table_a where 条件) loop
insert into table_b(a,b,c) values (item.a,item.b,item.c);
end loop;

如何将查询结果集进行赋值

-- 获取结算单位是否存在(查询结果集赋值)---
select COUNT(*) into conNum from Dxc_Consignor where NAME=balance_Name;

循环结果集,对每一个结果进行判断,如存在,执行修改,不存在,执行新增

----循环修改运输记录的货主的TmsCode  方法---
declare
  balance_Id varchar2(100);
  balance_Name varchar2(100);
  conNum number;
begin      
     --循环运输记录中的结算单位(ID,NAME)(查询结果集循环)--
     for item in (select A.BALANCE_ID,A.BALANCE_NAME from VIEW_GZ_YIMIAO A group by A.BALANCE_ID,A.BALANCE_NAME) loop
         -- 将查询到的数据赋值给变量 --
         balance_Id := item.balance_id;
         balance_Name := item.balance_name;      
         -- 获取结算单位是否存在(查询结果集赋值)---
         select COUNT(*) into conNum from Dxc_Consignor where NAME=balance_Name;
         --判断是否存在,存在则将结算单位ID赋给货主的TmsCode --
         if conNum=1 then
              dbms_output.put_line('存在');
                --执行修改--
              update Dxc_Consignor set TMSCODE=balance_Id where NAME=balance_Name;
         else
              dbms_output.put_line('不存在');
              --执行新增--
         end if;
                
      end loop;    
end; 

循环的结果集的视图
在这里插入图片描述
执行的结果视图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值