Технически, вы можете использовать пакет DBMS_METADATA
, чтобы получить DDL для представления в CLOB, а затем проанализировать, что ищет ссылку на вашу таблицу. Но есть гораздо более простые решения, чем смотреть на определение представления.
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