自动为分区表增加分区存储过程

自动为分区表增加分区存储过程:
 
Sql代码  
create or replace procedure guan_add_partition  
/*  
/*为一个用户下所有分区表自动增加分区.分区的列为date类型,分区名类似:p200706.  
/*create by David  
*/  
as  
v_table_name varchar2(50);  
v_partition_name varchar2(50);  
v_month char(6);  
v_add_month_1 char(6);  
v_sql_string varchar2(2000);  
v_add_month varchar2(20);  
  
cursor cur_part is select distinct u.table_name,max(p.partition_name) max_part_name from user_tables u,user_tab_partitions p  
where u.table_name=p.table_name and u.partitioned = 'YES'  
group by u.table_name;  
  
Begin  
  select to_char(sysdate,'yyyymm') into v_month from dual;  
  select to_char(add_months(sysdate,1),'yyyymm') into v_add_month_1 from dual;  
  select to_char(add_months(trunc(sysdate,'mm'),2),'yyyy-mm-dd') into v_add_month from dual;  
  open cur_part;  
  
  loop  
    fetch cur_part into v_table_name,v_partition_name;  
    exit when cur_part%notfound;    www.2cto.com  
      if to_number(substr(v_partition_name,2)) <=to_number(substr(v_month,1)) then  
        v_sql_string :='alter table '||v_table_name||' add partition p'||v_add_month_1||  
        ' VALUES LESS THAN ( to_date('''||v_add_month||''',''yyyy-mm-dd'') ) ';  
        execute immediate v_sql_string;  
      else  
        null;  
      end if;  
  end loop;  
  close cur_part;  
  
end;  
 
oracle job脚本:
Sql代码  
begin  
  sys.dbms_job.submit(job => :job,  
                      what => 'guan_add_partition;',  
                      next_date => to_date('02-04-2012', 'dd-mm-yyyy'),  
                      interval => 'trunc(sysdate)+1');  
  commit;  
end;  
/  
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值