Запрос приводит к сбою БД с ORA-0113

Мне нужно создать коллекцию из элементов коллекции во встроенном представлении. Я попытался деагрегировать коллекцию и снова агрегировать ее, используя функции сбора и таблицы, но это не удалось с ORA-03113.

Ниже приведена упрощенная версия запроса, вызвавшего проблему.

В моей реализации у меня будет много уровней вложенных запросов, объединенных объединениями в один запрос, который должен объединять все коллекции в одну. Из соображений производительности (дорогое переключение контекста) реализация кода PL/SQL для объединения коллекций невозможна.

Большое спасибо за ваши отзывы/предложения.

Скрипт


SELECT BANNER FROM V$VERSION
/

CREATE OR REPLACE TYPE OBJECT_ID_TAB_T IS TABLE OF NUMBER(11);
/

SELECT OWNER, CAST(COLLECT( MULTISET(SELECT COLUMN_VALUE FROM TABLE((OBJECT_ID_LIST) ))) AS OBJECT_ID_TAB_T) AS OBJECT_ID_LIST
FROM  (SELECT OWNER, OBJECT_NAME, CAST(COLLECT(OBJECT_ID) AS OBJECT_ID_TAB_T)  AS OBJECT_ID_LIST
       FROM ALL_OBJECTS
       GROUP BY OWNER, OBJECT_NAME
      )
GROUP BY OWNER
/

Результаты


BANNER                                                                          
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production    
PL/SQL Release 11.2.0.1.0 - Production                                          
CORE    11.2.0.1.0  Production                                                      
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production                         
NLSRTL Version 11.2.0.1.0 - Production                                          

5 rows selected.
Type created.
SELECT OWNER, CAST(COLLECT( MULTISET(SELECT COLUMN_VALUE FROM TABLE((OBJECT_ID_LIST) ))) AS OBJECT_ID_TAB_T) AS OBJECT_ID_LIST
FROM  (SELECT OWNER, OBJECT_NAME, CAST(COLLECT(OBJECT_ID) AS OBJECT_ID_TAB_T)  AS OBJECT_ID_LIST
       FROM ALL_OBJECTS
       GROUP BY OWNER, OBJECT_NAME
      )
GROUP BY OWNER
*
Error at line 0
ORA-03113: end-of-file on communication channel
Process ID: 8000
Session ID: 154 Serial number: 164

Script Terminated on line 25.
6
задан Sathyajith Bhat 18 June 2012 в 15:54
поделиться