Plsql

添加分區時的雙日期轉換

  • April 5, 2013

我想創建一個在按時間分區的表中添加新分區的過程。為此,我使用以下命令:

   s_until := to_char(sysdate+1,' SYYYY-MM-DD HH24:MI:SS');
   s_statement := 'ALTER TABLE '||s_table||' ADD PARTITION '||s_partition||' VALUES LESS THAN 
   (TO_DATE('''||s_until||''', ''SYYYY-MM-DD HH24:MI:SS'', ''NLS_CALENDAR=GREGORIAN'')) 
   TABLESPACE '||s_tablespace;
   execute immediate s_statement;

如您所見,我執行了不必要的日期轉換。有人知道如何跳過這個骯髒的黑客嗎?以這種方式執行而不進行轉換會產生 ORA 錯誤。

   s_statement := 'ALTER TABLE '||s_table||' ADD PARTITION '||s_partition||' VALUES LESS THAN 
   (sysdate+1) TABLESPACE '||s_tablespace;
   execute immediate s_statement;

在 Oracle 9i 中無法繞過它。

如果您使用的是 11g,則可以將表定義為間隔分區,以避免每天都創建一個新分區。但這不會對您使用古老的 Oracle 版本有所幫助。

引用自:https://dba.stackexchange.com/questions/39326