zoukankan      html  css  js  c++  java
  • 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; 

    循环的结果集的视图

    执行的结果视图

    PS:

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

  • 相关阅读:
    Mac基本操作记录
    flutter vscode+第三方安卓模拟器
    git一些基本操作
    获取点击元素的绝对位置
    windows下提交前检测操作
    VGG网络学习
    MySQL数据库中文乱码
    配深度学习环境中的小tips(tensorflow+anaconda+keras+cuda)
    Docker安装指定的anaconda
    yolov1阅读
  • 原文地址:https://www.cnblogs.com/xielong/p/9789544.html
Copyright © 2011-2022 走看看