如何识别在 Oracle 中引用特定 table 的所有存储过程

How to identify all stored procedures refering a particular table in Oracle

我正在使用 Oracle 12c,需要找到在 Stored Procedure/Function 和 [= 中使用特定 table 或视图的所有引用30=]包.

我找到了这个 answer about MS SQL Server,但它 Oracle 相关,除了 sp_helpsp_depends 有时 return 结果不准确。

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

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 中是否有更优雅的 and/or 标准解决方案。

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

如有任何帮助,我将不胜感激。

使用ALL_DEPENDENCIES字典table:

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