ORACLE VARRAY选择输出

时间:2014-10-16 00:27:33

标签: sql oracle oracle-sqldeveloper varray

我在VARRAY中遇到ORACLE问题:

当我尝试在表中选择varray类型时,SQL Developer中的输出显示

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

任何人都可以指出我摆脱“USERNAME.VARRAY_TYPE()”并提取结果只是

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

我的varray和table示例在这里给出了您的参考:

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
/

感谢提前!

1 个答案:

答案 0 :(得分:2)

使用cross jointable()分解结果,然后将其与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;