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

Angiv rekursivt koncentrationer af Oracles DBA_DEPENDENCIES-visning

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;


  1. Hvordan får man aktuel dato og tid i MySQL?

  2. Overvejelser om ydeevne for Azure SQL Managed Instance

  3. Hvordan kan sortering af objekter i buckets formuleres som gyldigt JPQL-udtryk?

  4. MySQL SELECT fra flere tabeller, flere GROUP BY og group_concat?