【问题标题】:Query or method to find out packages depending on a particular column of a table根据表的特定列查找包的查询或方法
【发布时间】:2014-03-19 12:56:07
【问题描述】:

我必须更改表列的名称和数据类型。我在 Oracle 11g 数据库中有大约 200++ 个包。如何找到所有依赖该列的包的名称?

【问题讨论】:

标签: oracle oracle11g


【解决方案1】:

您必须查看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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2013-04-25
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多