sql >> Databasteknik >  >> RDS >> Oracle

Lista rekursivt koncentrationer av Oracles DBA_DEPENDENCIES-vy

Du vill ange nyckelordet 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;

Det finns mer information om NOCYCLE och nyckelorden "CONNECT_BY_ISCYCLE" här:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

och här:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

Hoppas det hjälper...

EDIT:Efter kommentarer har du missat START WITH-satsen.

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, att behålla OWNER='FOO' där klausulen begränsar alla beroenden som returneras till bara FOO:s objekt så att du kan missa beroenden från andra scheman.

Redigera 2:Den primära nyckeln för en vytabell är ägaren, namnet bör därför väljas börja med båda och ansluta med båda. Du kan använda var för att filtrera bort önskade resultat.

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. Hur man skapar en tabell i MySQL

  2. Varför Oracle inte visar heltalsdelen av en decimal

  3. Hur man byter namn på en tabell i Microsoft Access

  4. Duplicerar poster för att fylla gapet mellan datum