2013-06-11 6 views
1

Я создаю SQL-запрос базы данных, где я пытаюсь получить элемент из VARRAY, который является подобъектом нескольких объектов, который является элементом другого VARRAY. Я могу успешно запросить подобъектами моего первого VARRAY какSQL Извлечение элементов varray в подобъекте в Oracle 11g Database

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

Вы можете извлечь данные из VARRAY of VARRAYs с помощью встроенного представления и нескольких кросс-соединений.

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

Пример установки работал отлично! Большое спасибо за то, что помогли мне найти правильный способ структурирования моего синтаксиса –

Смежные вопросы