技術上講,你可以使用DBMS_METADATA
包在CLOB中獲取視圖的DDL,然後解析查找對錶的引用。但是比查看視圖定義要容易得多。
Oracle在USER_DEPENDENCIES
視圖(或ALL_DEPENDENCIES
或DBA_DEPENDENCIES
,具體取決於您的權限級別以及是否嘗試跟蹤架構間的依賴關係)中維護有關對象依賴關係的信息。你好得多使用這些觀點
SQL> create table base_table (
2 col1 number
3 );
Table created.
SQL> create view my_view
2 as
3 select *
4 from base_table;
View created.
SQL> select name, type
2 from user_dependencies
3 where referenced_name = 'BASE_TABLE';
NAME TYPE
------------------------------ ------------------
MY_VIEW VIEW
如果您正在使用USER_DEPENDENCIES
視圖,你也可以做相關對象的樹更復雜的東西。如果我創建第二個視圖取決於第一個視圖,我可以很容易地看到兩個視圖最終都使用基表。
SQL> create view my_view2
2 as
3 select *
4 from my_view;
View created.
SQL> ed
Wrote file afiedt.buf
1 select level, name, type
2 from user_dependencies
3 start with referenced_name = 'BASE_TABLE'
4* connect by referenced_name = prior name
SQL>/
LEVEL NAME TYPE
---------- ------------------------------ ------------------
1 MY_VIEW VIEW
2 MY_VIEW2 VIEW
這東西是壞屁股!不知道我過去如何不必使用它。這工作完美。我很感激你花時間回答。我會投兩個票,因爲他們都工作,但是,這是最好的答案。謝謝! – northpole 2011-04-04 19:49:50