创建分区1

create or replace procedure p_addpartition_job(i_date date)
  -- Author  : zbn
  -- Created : 2013/10/28
  -- Description : 每天定时任务创建分区
  -- alter table t_yth_web_user_log_d add partition WEB_LOG_D_20131028 values('20131028');
as
    v_sql         varchar2(2000);      -- 动态语句,执行创建表分区
    par_exists    Boolean := False;    -- 判断分区是否存在
    v_Partname    varchar2(30);        -- 分区名
    v_Datepart    varchar2(8);         -- 截取入参或者系统时间作为分区名
    v_tab_name    varchar2(200);       -- 临时变量,保存需要建分区的表名
    cursor c_tab_name is select t.TABLE_NAME from user_tables t where t.TABLE_NAME like 'T_YTH%';  -- 定义一体化运营支撑游标


    v_sqlerr      varchar2(200);       -- 错误信息编码
    v_sqlmsg      varchar2(200);       -- 错误信息详情  


begin
  -- 检查是否有输入时间参数,如果没有,则取当前系统时间的yyyymmdd创建分区
    if (i_date='' or i_date is null) then
      v_Datepart := to_char(sysdate,'YYYYMMDD');
    else
      v_Datepart := to_char(i_date, 'YYYYMMDD');
    end if;


  -- 取分区名称
  v_Partname := 'p_' || v_Datepart;


  open c_tab_name;
      fetch c_tab_name into v_tab_name;        
        while c_tab_name%found loop
          par_exists := f_IsPartitionExist(v_tab_name,v_Partname);
          --如果分区存在,则不做任何操作
          if par_exists = true then
            Null;
          else
            --如果表分区不存在, 则创建该表分区,分区名为WEB_LOG_D_YYYYMMDD,数据yyyymmdd
            v_sql := 'alter table '||v_tab_name||' add partition p_'||v_Datepart||' values('||v_Datepart||')';
            Execute Immediate v_Sql;
          end if;
        fetch c_tab_name into v_tab_name;
       end loop;
    close c_tab_name;
    
exception
  when others then
    v_sqlerr := sqlcode;
    v_sqlmsg := substr(sqlerrm, 1, 200);
    dbms_output.put_line(v_sqlerr||'@@@'||v_sqlmsg);
end p_addpartition_job;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12961536/viewspace-1061408/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12961536/viewspace-1061408/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值