PL SQL 查找 Table 字段的依赖项

PL SQL Find Dependencies on Table Field

我需要找到对 table 字段的所有引用,并且我有数百个存储过程要搜索。目标是找到它在 where 子句中的使用位置,并向 in 语句添加额外的值。例如,

where myTable.Field_X in (1,2,3)

需要成为

myTable.Field_X in (1,2,3,4)

所以我很好奇是否有一个系统 table,例如 dba_dependencies,或者我可以查询的东西会告诉我哪些过程、视图或函数正在引用该字段?感谢您提供的任何帮助。

您使用的是哪个版本的 Oracle?如果您至少使用 11.1,它引入了列级依赖项跟踪,并且您不怕利用一些未记录的数据字典表,您可以 create a dba_dependency_columns view 为您提供此信息。但这将显示依赖于该列的每一段代码,而不仅仅是那些在语句的 WHERE 子句中使用该列的代码。

您可以在 dba_source 中搜索过程、函数和触发器的文本,以查找具有此类 WHERE 子句的代码。不过,这有点棘手——如果有人将值列表放在不同的行上,或者如果有一个内联视图,其中该列名称别名为其他内容,则通过文本搜索可能很难找到。对于视图,您需要使用 dbms_metadata 为视图生成 DDL 并在循环中搜索它。