Oracle 包括在不同文件中编写的过程到PL/SQL中的包

Oracle 包括在不同文件中编写的过程到PL/SQL中的包,oracle,plsql,oracle10g,Oracle,Plsql,Oracle10g,我已经搜索了很多,以找到一个答案,如果有一种方法,包括过程,这是写在不同的文件包 文件夹可以如下所示: Packages | Package1 | Procedures | proc1.sql proc2.sql package1.sql ... 包装 | 包装1 | 程序 | proc1.sql proc2.sql package1.sql ... 在package1.sql中,我希望有包头和包体,但某

我已经搜索了很多,以找到一个答案,如果有一种方法,包括过程,这是写在不同的文件包

文件夹可以如下所示:

Packages | Package1 | Procedures | proc1.sql proc2.sql package1.sql ... 包装 | 包装1 | 程序 | proc1.sql proc2.sql package1.sql ... 在package1.sql中,我希望有包头和包体,但某些过程应该存储在proc1.sql等文件中

有什么办法吗?
它可以真正帮助大体包或有很多程序的包


提前感谢:)

这是不可能的。
CREATE或REPLACE-PACKAGE
CREATE或REPLACE-PACKAGE-BODY
语句必须完整——它必须包含整个包规范或整个包体。这意味着整个规范必须在单个文件中的单个语句中,整个主体必须在单个文件中的单个语句中。当然,您可以将头文件和规范分离到不同的文件中,但是您不能将它们分离到多个部分,除非您在将它们发送到数据库之前使用一些预处理工具重新组合块


当一个包足够大以至于一个文件难以处理,并且有多个子组件可以逻辑地组合成一个更小的单元时,我强烈怀疑正确的答案是将包重构成多个更小、更集中的包。这很像一个面向对象的程序员发现,随着时间的推移,他们的一个类已经成长为一个/Winnebago对象,这个对象做的太多了,实际上涵盖了两个或三个对象应该负责的领域。最好咬紧牙关,开始重构,而不是试图通过分解源代码来解决问题。

是否希望文件是纯SQL脚本?或者,您可以让他们使用SQLPlus脚本,在将组件作为一个块发送到数据库之前,依靠SQLPlus执行预处理步骤来重新组装组件?可以采用SQL*Plus预处理器路线,但这是非常独特的(因此可能需要额外的努力来支持)。我通常会建议,如果一个包有太多的过程,你不希望它们都放在一个文件中,那么这个包本身做的太多了,应该重构。1。它必须是纯SQL脚本。2.若我能重构软件包,那个就太好了:)问题在于让它更容易,而不是更难。我只能说包程序是由高级诊断系统使用的,所以必须这样做。。。谢谢你的回答。看起来没有任何简单的解决方案。您能编写一个shell脚本来遍历目录结构并根据在子目录中找到的过程构建包吗?只是一个想法。如果这是一个要求,我会选择SQL*Plus路线。您可以使用@语法在任意点包含其他脚本(只需确保@位于行的开头)。