【问题标题】:Oracle database dependencies in PL/SQLPL/SQL 中的 Oracle 数据库依赖关系
【发布时间】:2016-08-27 23:35:22
【问题描述】:

我需要找到函数/过程(在包主体内定义)和它们使用的表之间的依赖关系。

我已经尝试过all_dependencies,但它仅适用于包级别,而不适用于内部函数/过程级别。 是否有可能使用例如找到这种依赖关系all_source?

提前感谢您的帮助。

【问题讨论】:

  • 试试dba_dependencies 喜欢select * from dba_dependencies where name = 'YOUR_OBJECT'
  • 如果我使用 dba_dependencies 而不是 all_dependencies 真的没有帮助。

标签: sql oracle plsql


【解决方案1】:

无法找到过程(在包中)和表之间的依赖关系。

有几种工具可以检查依赖关系。正如您已经发现的那样,*_DEPENDENCIES 仅跟踪每个包级别的对象依赖关系。有一个简洁的工具PL/Scope 可以跟踪包各部分之间的依赖关系。但它不会跟踪所有表引用。

理论上你可以使用*_SOURCE。实际上,除非您的代码使用一组有限的功能,否则这是不可能的。对于任何中等复杂的代码,忘记使用字符串函数或regular expressions to parse code。不幸的是,似乎没有任何 PL/SQL 解析器既可编程又能够准确解析复杂代码。

说“不可能”不是一个很好的答案。但在这种情况下,它可能会为您节省大量时间。这是很容易陷入死胡同并浪费大量精力的任务之一。

【讨论】:

  • 感谢这个残酷的澄清 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
相关资源
最近更新 更多