Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Listet rekursiv die Inhalte der Ansicht DBA_DEPENDENCIES von Oracle auf

Sie möchten das Schlüsselwort NOCYCLE nach Ihrem CONNECT BY:

angeben

d.h.

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

Weitere Informationen zu NOCYCLE und den Schlüsselwörtern "CONNECT_BY_ISCYCLE" finden Sie hier:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

und hier:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

Hoffe es hilft...

BEARBEITEN:Nach Kommentaren haben Sie die START WITH-Klausel verpasst.

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;

Übrigens, das Beibehalten der OWNER='FOO'-Where-Klausel begrenzt alle Abhängigkeiten, die auf das Objekt von FOO zurückgegeben werden, sodass Sie möglicherweise Abhängigkeiten von anderen Schemas übersehen.

Bearbeiten 2:Der Primärschlüssel einer Ansichtstabelle ist Eigentümer, daher sollte die Auswahl mit beiden beginnen und sich mit beiden verbinden. Sie können where verwenden, um die gewünschten Ergebnisse herauszufiltern.

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;