2013-03-15 50 views
0

我是pl/sql的新手。我創建了一個名爲PROC1的過程,並且如果另一個人創建具有相同名稱和我的過程的過程將會被覆蓋。有沒有解決方案不覆蓋我的程序proc1的同名?Oracle plsql程序無法覆蓋

+0

usally函數/程序按包分組。除此之外,你可以使用模式來分離用戶程序/數據 – Najzero 2013-03-15 15:01:37

+0

謝謝najzero ... – sony747 2013-03-15 15:15:05

回答

0

注意事項:

  1. 如果名爲PROC1程序架構中的存在,沒有其他過程/函數可以被命名爲架構中的PROC1。可以創建一個同名的包,並且可以創建名稱爲PROC1的函數/過程。

  2. 如果在其他一些用戶的方案命名爲PROC1公共同義詞,並指定PROC1CALL PROC1,等等,你自己的程序將被調用,而不是其他。如果他們打電話給PROC1,他們將訪問他們自己的對象,而不是你的程序。

  3. 對過程的調用不會改變它。必須在架構中使用CREATE OR REPLACE PROCEDURE proc1以將其替換爲其版本。

0

如果創建程序起訴「創建過程...」,那麼他們會收到警告,當然,「創建或替換過程...」不會產生錯誤。所以是的,

獨立程序與表,視圖,序列,專用同義詞,獨立程序,獨立存儲函數,包,物化視圖和用戶定義類型共享一個名稱空間,因此預先存在的對象與任何這些類型的相同名稱將阻止創建一個函數。

這通常不是一個問題,但並不要求人們用TAB或FNC或任何東西作爲前綴對象名稱,因爲這些對象的結構良好的名稱通常指向它的對象類型 - 例如。 USERS(複數名詞 - >表),CREATE_INVOICE(ACTION + NOUN - > procedure),ACTIVE_USERS(形容詞+名詞 - >查看)

可能是因爲您有多個名稱相同但規格不同的過程,如果他們在包裹中定義,他們可以愉快地共存。所有程序都是作爲一攬子計劃的一部分存在,而不是單獨存在的。