【发布时间】:2014-03-19 12:56:07
【问题描述】:
我必须更改表列的名称和数据类型。我在 Oracle 11g 数据库中有大约 200++ 个包。如何找到所有依赖该列的包的名称?
【问题讨论】:
我必须更改表列的名称和数据类型。我在 Oracle 11g 数据库中有大约 200++ 个包。如何找到所有依赖该列的包的名称?
【问题讨论】:
您必须查看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
【讨论】: