我怎么能读函数和过程体/ddl,而他们是在一个包



TASK:

将包中的所有函数和过程移动到当前Oracle模式中。(你可以想象你可能需要它的情况,如果不是——把它当作挑战!)

问题:

当它们在包中时,我如何读取函数/过程"体"?我知道我可以使用all_source, dba_source和其他方法来获得包体行,但这意味着我必须解析所有这些行/字符串-这应该是一种更简单的方法。不是吗?

如果您可以访问Toad,它可以很好地完成此操作。

同样,看看DBMS_METADATA package,特别是GET_DDL过程。

希望对你有帮助。

你到底为什么需要这个?

您是否只是试图执行在模式中定义的函数和过程?如果是这样,那么调用者的权利可能会有所帮助。

你这样做是为了测试吗?如果是这样,看看这个答案:是否有一种方法可以访问私有plsql过程用于测试目的?(总结:使用条件编译可选择性地将函数和过程公开)

如果你真的需要将包分解成函数和过程,如果你想要100%准确,你需要手动完成。

仅仅读取源代码并尝试自动执行有许多潜在的问题。那么包变量、类型、初始化、安全性(每个函数都可以是公共的吗?)、过程中的过程、重复的名称、包装的源代码等等呢?

相关内容

最新更新