PL SQL查找表字段的依赖关系

时间:2015-06-10 13:51:45

标签: database oracle plsql dependencies

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

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

需要成为

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

所以我很好奇是否有一个系统表,比如dba_dependencies,或者我可以查询的东西,它会告诉我哪些procs,views或函数引用了这个字段?感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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