Oracle 如何循环查询结果集,进行新增或修改

摘要:
Oracle的PL/SQL中怎样循环查询的结果集,然后根据查询结果进行判断,是新增或修改操作loop循环例子foritemin(selecta,b,cfromtable_awhere条件)loopinsertintotable_b(a,b,c)values(item.a,item.b,item.c);endloop;如何将查询结果集进行赋值--获取结算单位是否存在(查询结果集赋值)---selec

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 byA.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;
      endloop;    
end; 

循环的结果集的视图

Oracle 如何循环查询结果集,进行新增或修改第1张

执行的结果视图

Oracle 如何循环查询结果集,进行新增或修改第2张

PS:

参考网址:https://zhidao.baidu.com/question/478447631.html

免责声明:文章转载自《Oracle 如何循环查询结果集,进行新增或修改》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ML基础06-数据不平衡问题poi解析office文档内容的工具类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle的序列号(sequence)

Oracle的自增列,要采用序列号(sequence)。 初始化阶段要手动建立一个sequence,然后插入的时候,还要手动自己去读这个sequence的nextval赋给相关字段,如ID,麻烦的很。好处就是记录插入前,我们就知道这个ID值了,在处理主从表时,有时还比较方便。但这个对sql server来说,也不是问题,可以获得的。 oracle这个序列号...

oracle服务起不来以及无法监听问题解决

改问题是在搭建起一个很早之前的数据库的时候碰见的,虽然这个问题网上已经有很多相关的帖子,但因最近碰见多次这样的问题,特此简单记录: 1.最开始碰见的问题是:The listener supports no services 之前的记录没有存,借用其他贴相似错误: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orack...

企业管理器(OEM)介绍: Grid Control 和 Database Control

Oracle 自10g 以后,企业管理器(Oracle Enterprise Manager:OEM)变成了网页形式。 OEM 分两种:Grid Control(网格控制) 和 Database Control(数据库控制)。  Grid Control 是具有完整功能的全企业Oracle 生态系统管理工具。  Database Control是可以只作...

Oracle中trace的几种(Z)

我们在Oracle中在做troubleshooting的时候,经常要去做跟踪来查错,那今天就介绍几种trace的方法。 在这之前,我先说说10046事件,那么大家可能都对这个事件比较熟悉了,实际上,我们做SQL TRACE的时候,Oracle内部就是使用这个事件来完成的,他包含几个级别的。如下表(trouble shooting Oracle Perfor...

在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间

在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间 ------解决方案----------------------本周 select trunc(sysdate,'d')+1 from dual; select trunc(sysdate,'d')+7 from dual; --本月 select trunc(sysd...

Oracle表解锁

网搜 --第一步 查看被锁表 select b.owner,b.object_name, b.object_id,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id;--第二步 select do.object_id ,...