У меня есть таблица, которая содержит данные, которые представляют иерархические структуры. Самый простой способ получить данные из этой таблицы для одного «объекта» - это рекурсивный запрос. В той же таблице также хранятся «переменные-члены», связанные с «объектом». Я подумал, что было бы неплохо увидеть структуру объекта, а также связанные переменные-члены в одном запросе, поэтому я попробовал что-то вроде:
cursor object_explorer is
select (level*2) lvl, ob.object_id, lpad(ot1.object_type_name, 2*level + length(ot1.object_type_name), '.') ob_typ_nam
from obj_tab ob, obj_type ot1
, cursor (select lpad(mv.member_var_name, level + length(mv.member_var_name), ' ') var_nam, /*other stuff*/
from obj_type ot2, object_memberVar_value omv, member_variable mv
where mv.member_variable_id = omv.member_variable_id
and ot2.object_type_id = omv.object_type_id
and omv.object_id = ob.object_id)
where ot1.object_type_id = ob.object_type_id
and /*other filtering conditions unrelated to problem at hand*/
start with ob.objecT_id = '1234567980ABC'
connect by nocycle ob.parent_object = prior ob.object_id;
... и Oracle говорит мне "Курсорное выражение не разрешено".
Если я делаю это как два отдельных курсора (циклически просматривая результаты одного, а затем используя другой курсор на основе этих результатов), все работает нормально, поэтому мне не нужно один курсор решение.
Я просто хотел узнать, почему я не могу объединить эти два запроса с помощью выражений курсора - или может Я объединю их и просто как-то пропустил?
(версия Oracle 10g)