如何识别在 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_help
和sp_depends
有时 return 结果不准确。
我知道在 table 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 中是否有更优雅的 and/or 标准解决方案。
我也在检查这个 answer 是否能以任何方式帮助我。
如有任何帮助,我将不胜感激。
使用ALL_DEPENDENCIES
字典table:
SELECT *
FROM ALL_DEPENDENCIES
WHERE referenced_name = 'YOUR_TABLE_NAME'
AND owner = 'YOUR_USER';
我正在使用 Oracle 12c,需要找到在 Stored Procedure/Function 和 [= 中使用特定 table 或视图的所有引用30=]包.
我找到了这个 answer about MS SQL Server,但它 不 与 Oracle 相关,除了 sp_help
和sp_depends
有时 return 结果不准确。
我知道在 table 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 中是否有更优雅的 and/or 标准解决方案。
我也在检查这个 answer 是否能以任何方式帮助我。
如有任何帮助,我将不胜感激。
使用ALL_DEPENDENCIES
字典table:
SELECT *
FROM ALL_DEPENDENCIES
WHERE referenced_name = 'YOUR_TABLE_NAME'
AND owner = 'YOUR_USER';