0

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

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;

对于任何反馈,我们都表示感谢。谢谢你。

4

2 回答 2

2

这将生成十二个月的分区名称。调整 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; 
于 2012-07-26T07:49:06.497 回答
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

于 2012-07-26T07:58:52.787 回答