2013-06-11 49 views
1

我正在構建數據庫的SQL查詢,我試圖檢索VARRAY的元素,該元素是另一個VARRAY的元素的幾個對象的子對象。我能夠成功查詢的我的第一VARRAY子對象像SQL在Oracle 11g數據庫中檢索子對象的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元素的正確語法?

回答

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。

+0

示例設置完美無缺!非常感謝您幫助我找到構建語法的正確方法 –