Динамическое получение диапазона дат партиций Oracle

Получить динамический диапазон дат в партициях можно из поля HIGH_VALUE в таблице USER_TAB_PARTITIONS. Но тут возникают проблемы что поле HIGH_VALUE имеет тип LONG и не совсем удобно с ним работать не прибегая к помощи PLSQL. Но данную проблему легко решить воспользовавшись функцией DBMS_XMLGEN.GETXMLTYPE                 

Реализация алгоритма на Oracle:
SELECT  TABLE_NAME,
        PARTITION_NAME,
        PARTITION_POSITION,
        CASE 
                   WHEN PARTITION_NAME='PMAX' THEN TO_DATE('2999-12-31 00:00:00', 'yyyy-mm-dd hh24:mi:ss')+1
                   ELSE TO_DATE(TRIM('''' FROM  REGEXP_SUBSTR(EXTRACTVALUE(DBMS_XMLGEN.
                                                         GETXMLTYPE('select high_value from user_tab_partitions where table_name=''' ||
                                                                    TABLE_NAME || ''' and partition_name = ''' || PARTITION_NAME || ''''),
                                                         '//text()'),
                                            '''.*?''')),
                                'syyyy-mm-dd hh24:mi:ss') 
                   END AS HIGH_VALUE_IN_DATE_FORMAT
                    
FROM   USER_TAB_PARTITIONS
WHERE  TABLE_NAME = :P_TABLE_NAME
             

Комментарии