我必须更改表的列的名称和数据类型。我在Oracle 11g数据库中有大约200个++包。如何找到依赖于此列的所有包的名称?
答案 0 :(得分:2)
您必须查看all_dependencies
视图以检查所有对象正在使用您的表格。
select * from all_dependencies
where referenced_name = '<table_name_in_upper_case>';
但这并没有告诉你使用了哪些列。
您必须为此考虑all_source
。
select distinct type, name
from all_source
where upper(text) like '<column_name_in_upper_case>'
and name in (
select name
from all_dependencies
where referenced_name = '<table_name_in_upper_case>'
);
但是,如果列名是通用的,这可能会给你误报。
此外,all_source
不会显示可能正在使用此列名称的任何视图。您必须查看all_views
或使用
select dbms_metadata.get_ddl('VIEW','view_name_in_upper_case','owner_in_upper_case')
FROM dual