1

我正在构建一个数据库的 SQL 查询,我试图在其中检索 a 的一个元素,该元素VARRAY是几个对象的子对象,这些对象是另一个 的元素VARRAY。我可以成功查询我第一个VARRAY喜欢的子对象

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

SOURCE NUMBER结果是一个可变数组,我似乎无法获得访问它的语法权利和我尝试过的元素:

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 元素吗?

4

1 回答 1

0

您可以使用内联视图和多个交叉连接从 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 会有所帮助。

于 2013-06-12T05:30:54.257 回答