Функция Oracle COLLECT создает новый тип данных коллекции со случайным именем - PullRequest
3 голосов
/ 02 декабря 2009

Функция Oracle'C COLLECT запускает создание нового типа коллекции. Есть ли способ отключить это поведение?

вот что происходит ...

проверить существующие типы пользователей

select object_name from user_objects where object_type = 'TYPE'
no rows selected.

создать тип данных пользователя с типом оболочки VARRAY коллекции

CREATE OR REPLACE TYPE TEST_T  
   AS OBJECT (C1 VARCHAR2(20 BYTE), C2 VARCHAR2 (11 Byte));
CREATE OR REPLACE TYPE ARRAY_TEST_T AS VARRAY(200) OF TEST_T;

проверка типов ...

select object_name from user_objects where object_type = 'TYPE'

OBJECT_NAME                                                                     
------------
TEST_T                                                                          
ARRAY_TEST_T 

2 rows selected.

теперь этот запрос будет инициировать создание нового типа коллекции:

select cast(collect(TEST_T(c1,c2)) AS ARRAY_TEST_T) 
from (  select '1.1' as c1, '1.2' as c2 from dual ) ;

снова проверьте типы ...

select object_name from user_objects where object_type = 'TYPE'
OBJECT_NAME                                                                     
-----------------------------
TEST_T                                                                          
SYSTP5Iel7MEkRT2osGnB/YcB4A==                                                   
ARRAY_TEST_T                                                                    

3 rows selected.

Oracle создала новый тип коллекции "SYSTP5Iel7MEkRT2osGnB / YcB4A ==" со следующими характеристиками:

CREATE OR REPLACE TYPE "SYSTPzGCo9gclT3WmlUX5SNtEPg==" AS TABLE OF TEST_T

1 Ответ

1 голос
/ 02 декабря 2009

Чтение http://www.oracle -developer.net / display.php? Id = 306

Я думаю, что это будет работать, когда вы определите:

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ТИП ARRAY_TEST_T AS TEST_T;

Так что нет varray (200) из ..., но таблица ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...