我想获得Oracle视图或SQL查询中使用的所有表名的列表。
例如,从下面的查询
select a.col1, b.col2
from first_table a, second_table b;
我想得到这个结果:
first_table
second_table
我有一个客户创建非常复杂的SQL查询作为视图,我希望能够快速提取其中使用的所有表。我在perl中找到了一种方法,但我想在SQL中做到这一点。
答案 0 :(得分:1)
此查询为您提供位于架构VIEW_OWNER
中的视图VIEW_NAME的所有相关表(及其所有者)select ud.referenced_owner tab_owner,
ud.referenced_name tab_name
from all_dependencies ud
where ud.name = 'VIEW_NAME'
and ud.type = 'VIEW'
and ud.referenced_type = 'TABLE'
and ud.owner = 'VIEW_OWNER';
如果所有表和视图都在您的模式中,则可以使用USER_DEPENDENCIES Oracle字典;如果可以存在来自不同模式的表,则可以使用ALL_DEPENDENCIES。