2015-02-06 37 views
1

DB:甲骨文11gR2的格式化多层嵌套表对象的数组到表

平台:Windows 7客户端

你好,

I have an array of multilevel nested-table object. 

CREATE OR REPLACE TYPE OBJ_1 AS OBJECT (
    col_1   NUMBER, 
    col_2   VARCHAR2(56), 
    col_3   VARCHAR2(256) 
); 

CREATE OR REPLACE TYPE ARR_1 AS TABLE OF OBJ_1; 

CREATE OR REPLACE TYPE OBJ_2 AS OBJECT (
col_4   NUMBER, 
col_5   NUMBER(15), 
col_6   NUMBER(1), 
col_7   NUMBER(1), 
col_8   VARCHAR2(56), 
col_arr  ARR_1 
); 

CREATE OR REPLACE TYPE ARR_2 AS TABLE OF OBJ_2; 

我要转换到一个表格式 - 我需要提供给一些程序。预期输出:

------------------------------------------------------------------------ 
col_4 col_5 col_6 col_7 col_8 col_1 col_2 col_3 
------------------------------------------------------------------------ 
1  2  3   4  5  1  2  3 
1  2  3   4  5  4  5  6 

在蟾蜍以下查询创建的输出:

select * 
from table(ARR_2(OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(1,2,'3'))) , 
       OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(4,5,'6'))))) 

------------------------------------------------------ 
col_4 col_5 col_6 col_7 col_8 col_arr 
------------------------------------------------------ 
1  2   3  4  5  (DATASET) 
1  2   3  4  5  (DATASET) 

凡(数据集)是内部嵌套表。所以我认为将一个级别添加到'表函数'将完成这项工作,但是否,会出错。

select * from table(
select * 
from table(ARR_2(OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(1,2,'3'))) , 
       OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(4,5,'6'))))) 
       ); 

Error: ORA-02324: more than one column in the SELECT list of THE subquery 

有什么建议吗?

谢谢。

回答

0
select col_4, col_5, col_6, col_7, col_8, col_1, col_2, col_3 
from 
(
    select col_4, col_5, col_6, col_7, col_8, col_arr 
    from table(ARR_2(OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(1,2,'3'))) , 
        OBJ_2(1, 2, 3, 4, '5', ARR_1(OBJ_1(4,5,'6'))))) 
) 
cross join 
table(col_arr) 
+0

谢谢,这是有效的。 – user1804548 2015-02-09 17:24:48