2011-04-07 43 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建議您先將表格「僞造」,這可能適用於您,但您可能需要在真實表格可用時重新創建相關視圖。