【问题标题】:How to identify all stored procedures refering a particular table in Oracle如何识别引用Oracle中特定表的所有存储过程
【发布时间】:2017-07-10 18:52:50
【问题描述】:

我正在使用 Oracle 12c,需要查找在存储过程/函数中使用特定表或视图的所有引用。

我找到了这个answer about MS SQL Server,但它与Oracle无关,除了sp_helpsp_depends 有时会返回不准确的结果。

我知道在all_source 表的text 列中搜索,例如此代码(仅搜索标准用户定义的包名称,而不是系统包):

SELECT   type, name, line, text 
   FROM  all_source 
   WHERE type = 'PACKAGE BODY'
     AND name like 'P%' 
     AND UPPER(text) like '%' || p_table_or_view_name || '%'
   ORDER BY name, line;

但我正在寻找 Oracle 中是否有更优雅和/或标准的解决方案。

我也在检查这个answer 是否能以任何方式帮助我。

我将不胜感激。

【问题讨论】:

    标签: oracle function plsql package procedure


    【解决方案1】:

    使用ALL_DEPENDENCIES 字典表:

    SELECT *
    FROM   ALL_DEPENDENCIES
    WHERE  referenced_name = 'YOUR_TABLE_NAME'
    AND    owner           = 'YOUR_USER';
    

    【讨论】:

    • 另外,最好使用管理员用户登录。普通用户可能无权列出依赖项。
    • 此方案不会列出动态SQL中引用表的存储(子)程序。
    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2013-11-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多