Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1942237
  • 博文数量: 219
  • 博客积分: 8963
  • 博客等级: 中将
  • 技术积分: 2125
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-19 12:48
个人简介

文章分类

全部博文(219)

文章存档

2021年(1)

2020年(3)

2015年(4)

2014年(5)

2012年(7)

2011年(37)

2010年(40)

2009年(22)

2008年(17)

2007年(48)

2006年(31)

2005年(4)

分类: Oracle

2008-09-04 13:25:15

以下是一个为指定表增加分区的存储过程.细节我就不讲了,自己看吧.

当然,我的分区方式是以一个字段的时间为依据的.如果是以其它类型字段分区的,大同小异.

create or replace procedure CHOUY_ADD_PARTITION(table_name in Varchar2, from_date IN DATE, to_date in DAte)
/**
 * table_name 分割表名.
 * from_date 建立分区的开始时间.
 * to_date 建立分区的结束时间.
 */

AS
   F_DATE DATE;
   T_DATE DATE;
   sql_stmt VARCHAR2 (1000);
   err_msg VARCHAR2 (300);
BEGIN
   F_DATE := trunc(from_date);
   T_DATE := trunc(to_date);
   while F_DATE < T_DATE
   LOOP
      BEGIN
         sql_stmt := 'alter table '
           || table_name
           || ' split partition P'
           || to_char(T_DATE, 'yyyymmdd')
           || ' at (to_date('''
           || to_char(F_DATE + 1, 'yyyymmdd')
           || ''',''yyyymmdd'')) '
           || 'into (partition P'
           || to_char(F_DATE, 'yyyymmdd')
           || ',partition P'
           || to_char(T_DATE, 'yyyymmdd')
           || ') ';
         execute immediate sql_stmt;
         commit;
         F_DATE := F_DATE + 1;
      EXCEPTION
         WHEN OTHERS THEN
          err_msg := ' partition unsuccessfully! Error Information:'
           || SQLERRM;
      END;
   END LOOP;
END;

阅读(3068) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~