该程序可以做为一个Oracle的JOB执行在每月的28日前执行(考虑2月28天的原因),自动为该用户下的分区表增加分区.[@more@] 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; if to_number(substr(v_partition_name,2)) <=to_number(substr(v_month,1)) thenv_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"") ) tablespace users"; execute immediate v_sql_string; else null; end if; end loop; close cur_part; end;更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址