Искате да укажете ключовата дума NOCYCLE след вашето CONNECT BY:
т.е.
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER='FOO'
AND NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME;
Има повече информация за NOCYCLE и ключовите думи "CONNECT_BY_ISCYCLE" тук:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm
и тук:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm
Надявам се да помогне...
РЕДАКТИРАНЕ:След коментарите сте пропуснали клаузата ЗАПОЧНЕТЕ С.
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER='FOO'
START WITH NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME;
Между другото, запазването на клаузата OWNER='FOO' where ограничава всички зависимости, върнати само към обекта на FOO, така че е възможно да пропуснете зависимости от други схеми.
Редактиране 2:Първичният ключ на таблица с изглед е собственик, име, така че избраното трябва да започва с двете и да се свързва от двете. Можете да използвате къде да филтрирате желаните резултати.
SELECT OWNER, NAME, TYPE,
REFERENCED_OWNER,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
-- where referenced_type='TABLE'
START WITH owner = 'FOO' AND NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME
AND PRIOR REFERENCED_OWNER = OWNER;