我需要找到函数/过程(在包体内定义)和它们使用的表之间的依赖关系。
我已经尝试过 all_dependencies
但它只适用于包级别,而不适用于内部函数/过程级别。
是否有可能使用例如找到此依赖项all_source
?
预先感谢您的帮助。
最佳答案
不可能找到过程(在包中)和表之间的依赖关系。
有几种工具可以检查依赖关系。正如您已经发现的那样,*_DEPENDENCIES
仅在每个包级别跟踪对象依赖性。有一个简洁的工具PL/Scope跟踪包的各个部分之间的依赖关系。但它不会跟踪所有表引用。
理论上你可以使用*_SOURCE
。实际上,除非您的代码使用一组有限的功能,否则这是不可能的。对于任何中等复杂的代码,忘记使用字符串函数或 regular expressions to parse code .不幸的是,似乎没有任何 PL/SQL 解析器既可编程又能够准确解析复杂代码。
说“这不可能”并不是一个好的答案。但在这种情况下,它可能会为您节省很多时间。这是很容易走入死胡同并浪费大量精力的任务之一。
关于sql - PL/SQL 中的 Oracle 数据库依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28044294/