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

      

  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4875140.html
Copyright © 2011-2022 走看看