自动添加表分区

create or replace procedure esb_proc_trans_table
(p_currdate in date default NULL)
is
--全局参数
v_curr_date date;
v_curr_date_str varchar(30);
v_table_name varchar(30);
v_part_name varchar(30);
v_last_space varchar(30);
v_next_space varchar(30);
v_next_space_id number;
--esb_sys_log 信息
v_opt_name varchar(20);
v_opt_date varchar(8);
v_opt_start_tm varchar(17);
v_opt_end_tm varchar(17);
v_opt_sts varchar(1);
v_remark varchar(100);

--日期参数
v_next_date date;
v_next_date_str varchar(8);
v_next_date_base varchar(8);
v_t_9_date date;
v_t_9_date_str varchar(8);

v_sql_str varchar(512);
v_err_msg varchar(100);

begin

--*******************************************************************
--***********************状态检查和初始化****************************
--*******************************************************************

--提取处理日期
if p_currdate is NULL then
v_curr_date:=sysdate;
else
v_curr_date:=p_currdate;
end if;
v_next_date:=v_curr_date+1;
v_curr_date_str:=to_char(v_curr_date,'yyyymmdd');
v_next_date_str:=to_char(v_next_date,'yyyymmdd');
v_next_date_base:=to_char(v_next_date,'yyyymmdd');
v_last_space:='SUNDS_BP';
v_table_name:='P_SCAN';
dbms_output.put_line(v_curr_date);
dbms_output.put_line(v_next_date);

--创建分区
v_part_name:='P_SCAN_'||(v_curr_date_str);
v_sql_str:='alter table '||v_table_name||' add partition '||v_part_name||
' values less than ( to_date('''||v_next_date_base||
''',''yyyymmdd'')) tablespace '||v_last_space;
dbms_output.put_line(v_sql_str);
execute immediate v_sql_str ;


-----------------------------------------------------------------------
end esb_proc_trans_table;



-----------------------------------------------------------------------
end esb_proc_trans_table;



08-12月-16
09-12月-16
alter table P_SCAN add partition P_SCAN_20161208 values less than ( to_date('20161209','yyyymmdd')) tablespace SUNDS_BP
原文地址:https://www.cnblogs.com/hzcya1995/p/13348945.html