首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多级嵌套表对象数组格式化为表

将多级嵌套表对象数组格式化为表
EN

Stack Overflow用户
提问于 2015-02-07 06:49:07
回答 1查看 365关注 0票数 1

数据库: Oracle 11gR2

平台: windows 7客户端

你好,

代码语言:javascript
复制
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;

我想要将其转换为表格格式-我需要将其提供给某个程序。预期输出:

代码语言:javascript
复制
------------------------------------------------------------------------
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

在Toad上,以下查询将创建输出:

代码语言:javascript
复制
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)

其中(DATASET)是内部嵌套表。所以我认为在“表函数”中增加一个级别就可以了,但是没有,但是出错了。

代码语言:javascript
复制
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

有什么建议吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-02-07 12:40:55

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28376163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档