对多个有规律表进行更新剔重复操作的存储过程(up8000)

  • None.gifcreate or replace procedure up8000(table_num in numberis
    None.gif
    None.gif  i          
    number(40) := 0;
    None.gif  j          
    number(30) := 1;
    None.gif  smstable   
    varchar2(32);
    None.gif  update_sql 
    varchar2(1000);
    None.gif
    None.gif  
    --TYPE temp_array IS ARRAY(20) OF VARCHAR2(500); --假设最多有20个元素
    None.gif
      type temp_array is table of varchar2(1000);
    None.gif  temparray temp_array;
    None.gif
    None.gif
    begin
    None.gif  temparray :
    = temp_array();
    None.gif  temparray.Extend(
    4); --下面有几条这里就为几
    None.gif
      while i < table_num loop
    None.gif    
    if (i >= 10then
    None.gif      smstable :
    = 'SMS_USER_' || to_char(i);
    None.gif    
    else
    None.gif      smstable :
    = 'SMS_USER_0' || to_char(i);
    None.gif    
    end if;
    None.gif  
    None.gif    
    --Extend()中添的数量  
    None.gif
        temparray(1) := 'update ' || smstable ||
    None.gif                    
    ' t set t.orderservid=''KX'' where t.orderservid=''XH'' or t.orderservid=''TYWJ'' or t.orderservid=''XYYM'' or t.orderservid=''XHY'' or t.orderservid=''TNFB'' or t.orderservid=''ZRBD'' or t.orderservid=''SKL'' or t.orderservid=''CM'' or t.orderservid=''CS'' or t.orderservid=''MGCD''';
    None.gif    temparray(
    2) := 'update ' || smstable ||
    None.gif                    
    ' t set t.orderservid=''JS'' where t.orderservid=''SHBK'' or t.orderservid=''XCWH'' or t.orderservid=''JCCP'' or t.orderservid=''BDCX''';
    None.gif    temparray(
    3) := 'update ' || smstable ||
    None.gif                    
    ' a set a.orderservid=''BF''
    None.gif                     where exists (select 
    '' x'' from ' ||
    None.gif                    smstable 
    ||
    None.gif                    
    ' b where a.mobileno=b.mobileno and a.orderservid=b.orderservid and a.rowid<b.rowid)';
    None.gif    temparray(
    4) := 'update ' || smstable ||
    None.gif                    
    ' a set a.orderservid=''BF''
    None.gif                     where exists (select 
    '' x'' from ' ||
    None.gif                    smstable 
    ||
    None.gif                    
    ' b where a.mobileno=b.mobileno and a.orderservid=b.orderservid and a.rowid<b.rowid)';
    None.gif  
    None.gif    
    for j in 1 .. temparray.count loop
    None.gif      update_sql :
    = temparray(j);
    None.gif      
    --DBMS_OUTPUT.put_line(update_sql);
    None.gif
          execute immediate update_sql;
    None.gif    
    end loop;
    None.gif    
    commit;
    None.gif    i :
    = i + 1;
    None.gif  
    end loop;
    None.gif
    end up8000;

转载于:https://www.cnblogs.com/ppyyr/archive/2006/08/18/480478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值