我想生成一个分区列表,而不必手动键入它们,我还可以选择要创建的分区数量。我正在按范围使用分区。请参阅以下示例。
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;
如有任何反馈,我们将不胜感激。非常感谢。
这将生成十二个月的分区名称。调整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;
您正在使用哪个版本的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