2011-04-07 48 views
3

我有一个用于SQL的模式抽取工具Oracle然后尝试从另一个模式创建新的数据库。创建查看参考视图尚未创建

我也遇到过与目前SQL的一个问题(最有可能存在于甲骨文),当它试图这样做

CREATE VIEW TestView 
SELECT * FROM AnotherViewNotCreated 

它的错误。

我认为在SQL中使用EXEC命令可以工作,但它也会抱怨视图不存在。

有没有一种方法可以创建视图,即使它们引用了其他不存在的视图?

UPDATE:如果您从SQL它输出在似乎表明它知道哪些应该先建立防止引用问题的顺序视图创建的顺序脚本我已经注意到了。不知道它如何知道?

+0

它正是因为它不允许在没有可解析依赖性的情况下创建视图。 – harpo 2011-04-07 18:02:24

+0

我不认为这会对你有帮助,但是SQL Server确实有一个CREATE SCHEMA语句块,它允许你以任意顺序声明依赖对象(甚至是相互依赖的对象)。这使得声明某些模式变得容易 - 尽管它仍然需要声明所有的依赖关系。 – harpo 2011-04-07 18:03:54

回答

1

如何在视图调用不存在的视图时创建视图?您只需以依赖性顺序运行脚本。

我不会推荐使用视图来调用其他视图的性能原因。我们几乎失去了一个数百万美元的客户,因为一些应用程序开发人员认为这是一个好主意。它运行良好,直到有大量数据,然后系统放慢爬行。调用其他视图的视图,特别是当它们超过一个关卡时,可能会特别难以排除故障并进行维护。我真的会考虑这是否是一个好主意。

+0

使用sp-depends? – Jon 2011-04-07 14:54:26

1

我不认为你可以。 This thread建议您先将表格“伪造”,这可能适用于您,但您可能需要在真实表格可用时重新创建相关视图。