Plsql
添加分區時的雙日期轉換
我想創建一個在按時間分區的表中添加新分區的過程。為此,我使用以下命令:
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 版本有所幫助。