这是我的第一次参赛作品,所以请原谅我写这篇文章的任何错误。
我有一个充满表视图的oracle数据库模式。我想使用" TEXT_VC" " all_views"中的列table获取源表名列表。
这是我到目前为止的陈述:
SELECT view_name, text_vc, REGEXP_SUBSTR(TEXT_VC,'from (.+?) ') AS source_table
FROM all_views
WHERE owner = 'OWNER';
我还有这个正则表达式的视图问题。 首先,我从table_name"得到#34;结果是。我不想从""在我的结果集中。
其次,TEXT_VC列基本上显示了视图后面的SQL。所以在某些情况下我没有得到任何结果,因为有换行符。我尝试使用\ n和\ r \ n但我无法生成我想要的结果。
有人可以帮助我吗?
答案 0 :(得分:2)
select * from all_dependencies
create table mytable_1 (i int);
create table mytable_2 (i int);
create view myview
as
select count(*) as cnt
from mytable_1 t1
join mytable_2 t2
on t2.i = t1.i
;
select *
from all_dependencies
where owner = 'DMARKOVITZ'
and name = 'MYVIEW'
;
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+
| OWNER | NAME | TYPE | REFERENCED_OWNER | REFERENCED_NAME | REFERENCED_TYPE | REFERENCED_LINK_NAME | DEPENDENCY_TYPE |
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+
| DMARKOVITZ | MYVIEW | VIEW | DMARKOVITZ | MYTABLE_1 | TABLE | (null) | HARD |
| DMARKOVITZ | MYVIEW | VIEW | DMARKOVITZ | MYTABLE_2 | TABLE | (null) | HARD |
+------------+--------+------+------------------+-----------------+-----------------+----------------------+-----------------+