Non conosco alcuna utilità o funzione di Oracle per farlo. Puoi trovare le informazioni necessarie per scrivere il tuo programma per farlo nelle viste DBA_TAB_PARTITIONS o ALL_TAB_PARTITIONS, simili alle seguenti:
SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
FROM SYS.DBA_TAB_PARTITIONS
WHERE TABLE_OWNER = strSchema AND
TABLE_NAME = strTable
dove strSchema e strTable sono lo schema e la tabella che ti interessa. HIGH_VALUE è un campo LONG che contiene il codice per una chiamata alla funzione TO_DATE (supponendo che la tua tabella sia partizionata su un campo data); dovrai assegnare HIGH_VALUE a un campo LONG, quindi assegnare LONG a un VARCHAR2 per ottenere il valore da qualche parte può essere manipolato, in un modo simile a:
lHigh_value LONG;
strDate_clause VARCHAR2(100);
lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;
Quindi devi solo estrarre i campi appropriati dalla clausola DATE per determinare quali partizioni devi eliminare.
Condividi e divertiti.