我正在寻找以某种方式导出或可视化Oracle中任意PL / SQL对象的解析树的方法,以便允许在两个相似对象的解析树之间进行比较。这可能吗?
答案 0 :(得分:3)
理论上这应该是可能的(并且需要很多时间来实现!):
PL / SQL被解析并作为树状结构PLUS m代码存储在DB中。结构是DIANA加IDL的一些变体,而Ada又用来存储解析结果(PL / SQL与Ada非常相似)。有关参考,请参阅http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10807/e_limits.htm和http://cs.felk.cvut.cz/10gr2/appdev.102/b14261/tuning.htm
另一个选择是构建自己的解析器 - 起点是http://it.toolbox.com/blogs/oracle-guide/building-a-plsql-code-parser-using-plsql-part-1-29704
非常有用的资源是http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Finnigan.pdf - 您将找到许多有关如何从Oracle DB中提取DIANA- / IDL信息的信息,这些信息可以帮助您实现目标。