【问题标题】:ORACLE VARRAY Select outputORACLE VARRAY 选择输出
【发布时间】:2014-10-16 00:27:32
【问题描述】:

我在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
/

提前致谢!

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper varray


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2011-01-17
      • 2014-02-15
      • 2017-01-17
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多