Oracle
 sql >> Database >  >> RDS >> Oracle

Elenca ricorsivamente i concentri della vista DBA_DEPENDENCIES di Oracle

Vuoi specificare la parola chiave NOCYCLE dopo il tuo CONNECT BY:

cioè

SELECT NAME, 
       TYPE, 
       REFERENCED_NAME, 
       REFERENCED_TYPE 
  FROM DBA_DEPENDENCIES 
 WHERE OWNER='FOO' 
   AND NAME='VIEW_01' 
CONNECT BY NOCYCLE
  PRIOR REFERENCED_NAME = NAME;

Ulteriori informazioni su NOCYCLE e sulle parole chiave "CONNECT_BY_ISCYCLE" sono disponibili qui:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

e qui:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

Spero che aiuti...

EDIT:dopo i commenti, hai perso la clausola START WITH.

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;

A proposito, mantenendo OWNER='FOO' dove la clausola limita le dipendenze restituite solo all'oggetto di FOO, quindi potresti perdere le dipendenze da altri schemi.

Modifica 2:la chiave primaria di una tabella di visualizzazione è il proprietario, quindi il nome deve iniziare con entrambi e connettersi con entrambi. Puoi usare dove filtrare i risultati desiderati.

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;