我有几个SQL脚本可以设置应用程序的数据库。几乎没有脚本创建几乎没有视图引用的包,同样也有用于创建包含引用包的视图的脚本。
有没有办法将这两个脚本分开,然后分别只创建包或视图。
或任何替代方案。
答案 0 :(得分:4)
首先,创建包规范。
其次,创建视图 - 它们引用规范,而不是正文。
第三,创建包体 - 它们引用视图。
答案 1 :(得分:3)
您可以先使用语法
创建所有视图CREATE OR REPLACE FORCE VIEW
即使引用的对象尚不存在,也会创建一个视图,然后创建所有的包规范,然后创建实体。
现在您可以编译所有无效对象,或者让Oracle负责处理它(请参阅此链接)
答案 2 :(得分:1)
我认为你必须手动计算参考图,然后相应地命令执行脚本。
所以你需要创建一组脚本views1.sql,views2.sql,...和packages1.sql,packages2.sql,... Views1.sql仅包含不引用任何包的视图。 Packages1.sql仅包含未引用任何视图的包。 Views2.sql仅包含引用packages1.sql包的视图。 Packages2.sql仅包含引用views1.sql中的视图的包。
依此类推,直到你完成。