生成分区名称列表

时间:2012-07-26 07:39:44

标签: sql oracle date range database-partitioning

我想生成一个分区列表,而不必手动输入它们,我也可以选择要创建的分区数。 我正在按范围使用分区。 请看下面的例子。

P_PARTITION_20120830 VALUES LESS THAN ('2012-08-30')
P_PARTITION_20120930 VALUES LESS THAN ('2012-09-30')
P_PARTITION_20121030 VALUES LESS THAN ('2012-10-30')
...
and so on

这是我到目前为止所得到的。

select  'P_PARTITION_' || to_char(add_months(sysdate, 1),'YYYYMMDD')
|| ' VALUES LESS THAN ' || to_char(sysdate, '(''YYYY-MM-DD'')') 
from dual;

任何反馈都将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:2)

这将生成12个月的分区名称。调整CONNECT BY子句中的边界以生成所需的数字。

select  'P_PARTITION_' || to_char(add_months(sysdate, level),'YYYYMMDD') 
|| ' VALUES LESS THAN ' || to_char(sysdate, 'YYYY-MM-DD')  
from dual
connect by level <= 12; 

答案 1 :(得分:2)

您使用的是哪个版本的Oracle?如果您使用的是11g,则可以根据需要让Oracle为您创建分区。这意味着DBA的工作量减少了。

Oracle将此称为“间隔分区”。

有关语法,请参阅http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_7002.htm#BABJDACD,有关示例,请参阅http://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin001.htm#autoId3