2013-02-14 2 views
1

Oracle보기가 있고 내보기가 의존하는 모든 테이블을 찾고 싶습니다. 아마도 내보기가 다른보기에 따라 달라집니다.이 경우 재귀 적으로 종속성을 탐색하고 표로 이동하려고합니다. 여기 보기가 의존하는 모든 테이블 찾기

내 스키마의 예입니다

CREATE TABLE T1 (A NUMBER); 
CREATE TABLE T2 (B NUMBER); 
CREATE TABLE T3 (A NUMBER, B NUMBER); 

CREATE VIEW V1 AS SELECT * FROM T1; 
CREATE VIEW V2 AS SELECT * FROM T2; 
CREATE VIEW V3 AS SELECT * FROM V1, V2 UNION ALL SELECT * FROM T3; 

그리고 이것은 내가 좀하고 싶습니다 출력입니다 :

VIEW_NAME TABLE NAME 
--------- ---------- 
V3  T1 
V3  T2 
V3  T3 

답변

1

에 BY 절 CONNECT를 사용하여 조회 할 수 있습니다.

SELECT CONNECT_BY_ROOT d.name AS view_name, d.referenced_name AS table_name 
FROM user_dependencies d 
WHERE d.referenced_type = 'TABLE' 
START WITH d.name = 'V3' AND d.type = 'VIEW' 
CONNECT BY PRIOR d.referenced_name = d.name AND PRIOR d.referenced_type = d.type