繁体   English   中英

SQL检索Oracle 11g数据库中子对象的varray元素

[英]SQL Retrieving varray elements of a subobject in Oracle 11g Database

我正在建立数据库的SQL查询,我试图在其中检索VARRAY的元素,该元素是多个对象的子对象,而该对象是另一个VARRAY的元素。 我可以成功查询第一个VARRAY子对象,例如

SELECT o.data_obj.DATA_DQI.SOURCE_NUMBER SOURCE_NUMBER 
       from RTRD_W.rtrd_pri, table(NOMNL) o;

但是SOURCE NUMBER结果是一个varray,我似乎无法正确访问语法并尝试了它的元素:

SELECT o.data_obj.DATA_DQI.SOURCE_NUMBER SOURCE_NUMBER.SRC_REF_VA(1) 
      from RTRD_W.rtrd_pri, table(NOMNL) o;

我以为会检索嵌入式varray中的第一个元素,但是它说我的SQL语法有错误。 谁能找到我的语法错误或显示正确的语法来查询作为子对象的VARRAY元素?

您可以使用内联视图和多个交叉联接从VARRAY的VARRAY中提取数据。

create or replace type v_test1 is varray(10) of number;
create or replace type v_test2 is varray(10) of v_test1;

create table test1
(
    a number,
    b v_test2
);

insert into test1 values(1, v_test2(v_test1(1, 2, 3), v_test1(4, 5, 6)));

select a, column_value b
from
(
    select a, column_value b
    from test1, table(b)
) data, table(data.b);

A   B
-   -
1   1
1   2
1   3
1   4
1   5
1   6

为了简化示例,我排除了中间的对象。 如果您想要更具体的示例,则为所有相关对象发布DDL将会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM