2014-10-16 3 views
1

У меня возникли проблемы с VARRAY в ORACLE:ORACLE VARRAY Выберите выход

Когда я пытаюсь выбрать тип VARRAY в таблице, выход в SQL Developer показывает

VARRAY_TYPE 
__________________________________________________ 
USERNAME.VARRYA_TYPE('TYPE1','TYPE2','TYPE3') 

Может кто-нибудь мне точку вне способ избавиться от «USERNAME.VARRAY_TYPE()» и извлечь результат будет просто

VARRAY_TYPE 
__________________________________________________ 
'TYPE1','TYPE2','TYPE3' 

Мои VARRAY и пример таблицы приведены здесь для г eferences:

CREATE TYPE varray_TYPE AS VARRAY(3) OF CHAR(20) 
/

CREATE TYPE table_TYPE AS OBJECT (

tableID   number (6), 
varray_var  GENRE_TYPE 
) 
/

CREATE TABLE table1 as table_type(
tableID PRIMARY KEY 
) 
/

AND MY SELECT QUERY IS: 

SELECT VARRAY_VAR AS VARRY_TYPE 
FROM TABLE table1 
/

Заранее спасибо!

ответ

2

Отсортировать результаты с помощью cross join и table(), а затем сгруппировать их с помощью listagg, чтобы добавить форматирование самостоятельно.

select 
    tableID, 
    listagg(trim(column_value), ',') 
     within group (order by column_value) varray_type 
from table1 
cross join table(table1.varray_var) 
group by tableID 

TABLEID VARRAY_TYPE 
------- ----------- 
1   TYPE1,TYPE2,TYPE3 

я должен был сделать несколько незначительных изменений в синтаксисе, чтобы получить эту работу:

CREATE TYPE varray_TYPE AS VARRAY(3) OF CHAR(20) 
/

CREATE TYPE table_TYPE AS OBJECT (
tableID   number (6), 
varray_var  varray_TYPE 
) 
/

CREATE TABLE table1 of table_type(
tableID PRIMARY KEY 
) 
/

insert into table1 values(1, varray_type('TYPE1','TYPE2','TYPE3')); 

SELECT VARRAY_VAR AS VARRY_TYPE 
FROM table1; 
Смежные вопросы