1

Oracle VIEW を取得しました。ビューが依存するすべてのテーブルを検索したいと考えています。おそらく、私のビューは他のビューに依存しています。この場合、依存関係を再帰的にナビゲートしてテーブルにアクセスしたいと考えています。

これが私のスキーマの例です:

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
4

2 に答える 2

2

David Aldridge の回答で解決しました。次のクエリを使用しました。

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
于 2013-02-14T12:09:20.433 に答える