我有幾個SQL腳本設置應用程序的數據庫。幾乎沒有創建包含少量視圖引用的包的腳本,並且同樣具有創建包含引用的視圖的腳本。簡化包和視圖的創建
有沒有辦法將這兩個腳本分開,然後分別單獨創建包或視圖。
或任何其他工作。
我有幾個SQL腳本設置應用程序的數據庫。幾乎沒有創建包含少量視圖引用的包的腳本,並且同樣具有創建包含引用的視圖的腳本。簡化包和視圖的創建
有沒有辦法將這兩個腳本分開,然後分別單獨創建包或視圖。
或任何其他工作。
我想你必須手動計算參考圖形,然後相應地命令腳本的執行。因此,您需要創建一組腳本views1.sql,views2.sql,...和packages1.sql,packages2.sql,... Views1.sql僅包含未引用任何包的視圖。 Packages1.sql僅包含未引用任何視圖的軟件包。 Views2.sql僅包含引用來自packages1.sql的包的視圖。 Packages2.sql僅包含引用來自views1.sql的視圖的軟件包。
依此類推,直到完成。
@ rics。 +1。感謝你的及時回覆。事實上,我通過按順序調用腳本來做同樣的事情。想知道是否有更好的方法來處理它。 – Viky 2009-10-13 07:09:01
我有一個引用視圖的包,其中相同的視圖引用了包中的另一個函數。不知道這個想法是否有效。我最終編譯了Spec,然後是引用包的視圖,然後是Body。謝謝。 – 2017-09-19 23:13:54
你可以只創建第一個使用語法
CREATE OR REPLACE FORCE VIEW
即使還不存在引用的對象,然後創建您的所有包裝規格,然後機構內創建一個視圖中的所有的意見。
現在你可以編譯所有無效的對象,或只是讓Oracle照顧它(見本鏈接)
首先,創建包規範。
其次,創建視圖 - 它們引用規範,而不是正文。
三,創建包體 - 它們引用視圖。
工作就像一個魅力。我們的DBA比較喜歡所有的DDL編譯,所以這比編譯無效更好。第一次遇到這種情況時,有一個視圖引用了包中的函數,而包中的另一個函數引用了相同的視圖。帶我一邊找到這個 - 使用循環引用作爲我的搜索條件。 – 2017-09-19 23:11:20
添加'循環參考'文本希望它會被添加到SO索引,並幫助其他人找到這個好問題和答案。 – 2017-09-19 23:17:16