Oracle
 sql >> база данни >  >> RDS >> Oracle

Рекурсивно изброяване на концентрациите на изгледа DBA_DEPENDENCIES на Oracle

Искате да укажете ключовата дума NOCYCLE след вашето CONNECT BY:

т.е.

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

Има повече информация за NOCYCLE и ключовите думи "CONNECT_BY_ISCYCLE" тук:http://www.dba -oracle.com/t_advanced_sql_connect_by_loop.htm

и тук:http://download.oracle. com/docs/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

Надявам се да помогне...

РЕДАКТИРАНЕ:След коментарите сте пропуснали клаузата ЗАПОЧНЕТЕ С.

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;

Между другото, запазването на клаузата OWNER='FOO' where ограничава всички зависимости, върнати само към обекта на FOO, така че е възможно да пропуснете зависимости от други схеми.

Редактиране 2:Първичният ключ на таблица с изглед е собственик, име, така че избраното трябва да започва с двете и да се свързва от двете. Можете да използвате къде да филтрирате желаните резултати.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за актуализиране на Oracle с обединения

  2. Как да извика съхранена процедура в JDBC

  3. SQL е твърде дълъг за String

  4. Навигирайте от приложение A до приложение B със същите идентификационни данни - APEX 19.2

  5. Използване на параметри с Oracle ODBC връзка