【问题标题】:SQL Retrieving varray elements of a subobject in Oracle 11g DatabaseSQL 检索 Oracle 11g 数据库中子对象的可变数组元素
【发布时间】:2013-06-12 13:31:07
【问题描述】:

我正在构建一个数据库的 SQL 查询,我在其中尝试检索 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 元素吗?

【问题讨论】:

    标签: sql oracle plsql oracle11g


    【解决方案1】:

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

    【讨论】:

    • 示例设置完美运行!非常感谢您帮助我找到构建语法的正确方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多