sql >> Database >  >> RDS >> Oracle

Recursief de inhoud van de DBA_DEPENDENCIES-weergave van Oracle weergeven

U wilt het NOCYCLE-sleutelwoord opgeven na uw CONNECT BY:

d.w.z.

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

Meer informatie over NOCYCLE en de trefwoorden "CONNECT_BY_ISCYCLE" vindt u hier:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

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

Ik hoop dat het helpt...

EDIT:Na opmerkingen heb je de START WITH-clausule gemist.

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;

Trouwens, het behouden van de OWNER='FOO' waar-clausule beperkt alle afhankelijkheden die worden geretourneerd naar alleen het object van FOO, zodat u mogelijk afhankelijkheden van andere schema's mist.

Bewerken 2:De primaire sleutel van een weergavetabel is de eigenaar, de naam moet dus met beide beginnen en door beide worden verbonden. U kunt gebruiken waar u de gewenste resultaten wilt filteren.

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;


  1. Gegevens selecteren in een Postgres-array

  2. SSIS C# 2012-scripttaak die verwijst naar WinSCPnet.dll mislukt wanneer het wordt uitgevoerd vanuit SQL Server Agent met uitzondering door het doel van een aanroep

  3. Hoe een NIET NULL-beperking in MySQL toe te voegen?

  4. selecteer nummers uit database voor som