Du vil angive nøgleordet NOCYCLE efter din CONNECT BY:
dvs.
SELECT NAME,
TYPE,
REFERENCED_NAME,
REFERENCED_TYPE
FROM DBA_DEPENDENCIES
WHERE OWNER='FOO'
AND NAME='VIEW_01'
CONNECT BY NOCYCLE
PRIOR REFERENCED_NAME = NAME;
Der er mere info om NOCYCLE og "CONNECT_BY_ISCYCLE" søgeordene her:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm
og her:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm
Håber det hjælper...
EDIT:Efter kommentarer er du gået glip af START WITH-klausulen.
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;
BTW, behold OWNER='FOO', hvor klausulen begrænser alle afhængigheder, der returneres til kun FOO's objekt, så du muligvis går glip af afhængigheder fra andre skemaer.
Rediger 2:Den primære nøgle til en visningstabel er ejer, navn, så markeringen skal starte med begge og forbindes med begge. Du kan bruge hvor du vil filtrere de ønskede resultater fra.
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;