我正在构建数据库的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的查询元素的正确语法吗?
答案 0 :(得分: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,将会有所帮助。