使用 PL/SQL 脚本从视图中检索 table 名称
Retrieve table names from views using PL/SQL script
我正在查找我的数据库中的视图所使用的源 table。我需要一个完全自动化的解决方案。例如,我有一个视图从另一个视图中提取数据,该视图从 table 中提取数据。浏览每个视图的 DDL 脚本并向下钻取以找到 table 非常容易,但我希望编写一个脚本来为我在所有视图中执行此操作。我应该反对数据字典吗?有没有人有提示或脚本或查询?提前致谢。
如果你只有什么表,递归引用,试试这个。 'CONNECT BY' 子句为您执行递归钻取:
SELECT
*
FROM
sys.dba_dependencies
WHERE referenced_type = 'TABLE'
START WITH "NAME" = 'VIEW_NAME_IN_QUESTION'
CONNECT BY PRIOR REFERENCED_NAME = "NAME" AND "TYPE" = 'VIEW';
如果您想查看所有对象类型,请删除 where 子句。 REFERENCED_NAME 列为您提供列表。
我正在查找我的数据库中的视图所使用的源 table。我需要一个完全自动化的解决方案。例如,我有一个视图从另一个视图中提取数据,该视图从 table 中提取数据。浏览每个视图的 DDL 脚本并向下钻取以找到 table 非常容易,但我希望编写一个脚本来为我在所有视图中执行此操作。我应该反对数据字典吗?有没有人有提示或脚本或查询?提前致谢。
如果你只有什么表,递归引用,试试这个。 'CONNECT BY' 子句为您执行递归钻取:
SELECT
*
FROM
sys.dba_dependencies
WHERE referenced_type = 'TABLE'
START WITH "NAME" = 'VIEW_NAME_IN_QUESTION'
CONNECT BY PRIOR REFERENCED_NAME = "NAME" AND "TYPE" = 'VIEW';
如果您想查看所有对象类型,请删除 where 子句。 REFERENCED_NAME 列为您提供列表。