• oracle语句块调用


      如果要写一个临时的语句块调用某个过程,可以参照以下方式:

    declare
      cursor v_is is
        select distinct aac001 from sic84 where aab001=511500000999 ;
      pi_data lew_pub.data;
      po_fhz varchar2(1000);
      po_msg varchar2(2000);
    begin
      for x in v_is loop
        --select x.aac001 into  PI_DATA.AAC001 from dual;
        --select '110' into PI_DATA.AAE140 from dual ;
        PI_DATA.AAC001 := x.aac001;
        PI_DATA.AAE140 := '110';
        lew_pub.repair_ac20_by_sj(pi_data, po_fhz, po_msg);
        if po_fhz <> '1' then
          dbms_output.put_line('出错了:'||po_msg);
        end if;
      end loop;
    end;
    

      循环修改序列号。

     1 DECLARE 
     2  
     3  CURSOR v_c IS SELECT * FROM sac15_tmp_wyl;
     4  v_caz045 sac15.caz045%TYPE;
     5  v_aac001 sac15.aac001%TYPE;
     6  BEGIN
     7    FOR x IN v_c LOOP
     8      v_aac001 := x.aac001;
     9      SELECT seq_bxgx_caz045.nextval INTO v_caz045 FROM dual;
    10      UPDATE sac15_tmp_wyl SET CAZ045 = v_caz045 WHERE aac001 = v_aac001 AND aae140 = '310';
    11    END LOOP;
    12  END;

    批量授权语句:

     1 DECLARE
     2   CURSOR V_OPER IS
     3     SELECT *
     4       FROM FW_OPERATOR
     5      WHERE LENGTH(BAE001) = 8
     6        AND BAE001 LIKE '511521%';
     7   V_ID NUMBER(12);
     8 
     9 BEGIN
    10   FOR V_O IN V_OPER LOOP
    11     SELECT SEQ_FW_OPERATOR2RIGHT.NEXTVAL INTO V_ID FROM DUAL;
    12     INSERT INTO FW_OPERATOR2RIGHT
    13     VALUES
    14       (V_ID, V_O.OPERID, '305002', 1, 1, 20150923170000, NULL, 1, NULL);
    15       SELECT SEQ_FW_OPERATOR2RIGHT.NEXTVAL INTO V_ID FROM DUAL;
    16     INSERT INTO FW_OPERATOR2RIGHT
    17     VALUES
    18       (V_ID, V_O.OPERID, '305032', 1, 1, 20150923170000, NULL, 1, NULL);
    19   END LOOP;
    20 END;
     1 declare
     2   cursor v_is is
     3     select distinct aac001 from sic84 where aab001=511500000999 ;
     4   pi_data lew_pub.data;
     5   po_fhz varchar2(1000);
     6   po_msg varchar2(2000);
     7 begin
     8   for x in v_is loop
     9     --select x.aac001 into  PI_DATA.AAC001 from dual;
    10     --select '110' into PI_DATA.AAE140 from dual ;
    11     PI_DATA.AAC001 := x.aac001;
    12     PI_DATA.AAE140 := '110';
    13     lew_pub.repair_ac20_by_sj(pi_data, po_fhz, po_msg);
    14     if po_fhz <> '1' then
    15       dbms_output.put_line('出错了:'||po_msg);
    16     end if;
    17   end loop;
    18 end;

    调用过程的另一个例子,20160801加,

    declare
      pi_aac002 varchar2(20) := '51112219560108xxxx';
    
      v_cnt        number(2);
      v_cnt_sic84  number(2);
      v_aac001     ac01.aac001%type;
      v_bae001     ac01.bae001%type;
      v_cae122_min sic84.cae122%type;
      v_cae122_max sic84.cae122%type;
      v_aae180_avg sic84.aae180%type;
      v_aab001     sic84.aab001%type;
      v_procname   varchar2(200);
      v_procparams varchar2(500);
      PO_FHZ       varchar2(400);
      po_msg       varchar2(400);
    begin
      select count(1) into v_cnt from ac01 a where a.aac002 = pi_aac002;
      if v_cnt > 0 then
        select aac001 into v_aac001 from ac01 a where a.aac002 = pi_aac002;
        select bae001 into v_bae001 from ac01 a where a.aac002 = pi_aac002;
      
        for nf in 1990 .. 1995 loop
          select count(1)
            into v_cnt_sic84
            from sic84 a
           where aac001 = v_aac001
             and substr(a.aae002, 1, 4) = nf;
          --只有sic84 有数据才更新ac20
          if v_cnt_sic84 > 0 then
            select min(a.cae122)
              into v_cae122_min
              from sic84 a
             where aac001 = v_aac001
               and substr(a.aae002, 1, 4) = nf;
            select max(a.cae122)
              into v_cae122_max
              from sic84 a
             where aac001 = v_aac001
               and substr(a.aae002, 1, 4) = nf;
            select aab001
              into v_aab001
              from sic84 a
             where aac001 = v_aac001
               and substr(a.aae002, 1, 4) = nf
               and rownum = 1;
          
            select avg(nvl(a.aae180, 0))
              into v_aae180_avg
              from sic84 a
             where aac001 = v_aac001
               and substr(a.aae002, 1, 4) = nf;
            -- 插入ac20
            delete from ac20 a
             where aac001 = v_aac001
               and substr(a.aae041, 1, 4) = nf;
            insert into ac20
              (AAZ157,
               AAZ159,
               BAE001,
               AAB001,
               AAC001,
               AAE140,
               AAC013,
               CAC012,
               AAE041,
               AAE042,
               AAE180,
               CAC036,
               AAA041,
               AAA042,
               AAA043,
               AAC402,
               AAB301)
            values
              (seq_bxgx_aaz157.nextval,
               null,
               v_bae001,
               v_aab001,
               v_aac001,
               '110',
               null,
               null,
               v_cae122_min,
               v_cae122_max,
               v_aae180_avg,
               null,
               0.0800,
               0.1200,
               0.0000,
               '0',
               null);
          end if;
        end loop;
        -- 循环调用修复sic86 的过程
        pkg_zhgl.Ylgrzh_Cxtj(v_aac001, '110', PO_FHZ, PO_MSG);
      
      end if;
    
    end;
    

      

  • 相关阅读:
    css实现导航栏切换动画
    ubuntu系统下mysql重置密码和修改密码操作
    Ubuntu16.04 安装配置nginx,实现多项目管理、负载均衡
    每天一点点之数据结构与算法
    vuex基本使用
    在 npm 中如何用好 registry
    django模板
    skywalking 通过python探针监控Python 微服务应用性能
    Centos7新加磁盘扩容根分区
    python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4875140.html
Copyright © 2020-2023  润新知