sql >> Databáze >  >> RDS >> Oracle

Automaticky zrušte nejstarší oddíl v oracle 11G

Nevím o žádné oracle utility nebo funkci, která by to udělala. Informace, které potřebujete k napsání vlastního programu, můžete najít v zobrazeních DBA_TAB_PARTITIONS nebo ALL_TAB_PARTITIONS, podobně jako v následujícím:

SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
  FROM SYS.DBA_TAB_PARTITIONS
  WHERE TABLE_OWNER = strSchema AND
        TABLE_NAME = strTable

kde strSchema a strTable jsou schéma a tabulka, které vás zajímají. HIGH_VALUE je LONG pole, které obsahuje kód pro volání funkce TO_DATE (za předpokladu, že je vaše tabulka rozdělena na pole data); budete muset přiřadit HIGH_VALUE k poli LONG a poté přiřadit LONG k VARCHAR2, abyste získali hodnotu někde, kde s ní lze manipulovat, podobným způsobem jako:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;

Pak stačí extrahovat příslušná pole z klauzule DATE, abyste mohli určit, které oddíly musíte zrušit.

Sdílejte a užívejte si.



  1. FREETEXTTABLE má vždy hodnost 0

  2. Vytváření nových modulů pomocí PostgreSQL Create Extension

  3. MySQL - SELECT ... WHERE id IN (..) - správné pořadí

  4. MAX() – Najděte maximální hodnotu ve sloupci v MySQL