2012-03-21 100 views
0

我在Oracle 10g的包中有一個SP。我使用Oracle SQL Developer來訪問數據庫。我如何重命名這個SP?其中一個解決方案是以下命令。重命名Oracle 10g中的包中的存儲過程

create or replace procedure new_procedure_name 
as 
begin 
old_procedure_name; 
end; 

這是一個解決方案,我在計算器上(old post)找到。還有很多人建議我們需要刪除並創建一個新的SP。我的東西在一個包裏,我不認爲上面的命令在那裏工作。

+0

謝謝Gaurav。建議接受 – Raghu 2012-03-25 00:20:48

回答

0

感謝@Ben和@AlejoBrz抽空回答我的問題。這是誰幫助我做的更有經驗的開發人員。只需進入包,右鍵單擊並編譯它,然後將Pckg_body下的SP重命名爲其他名稱,重命名包下的SP,重新編譯並更改名稱。 @AjojoBrz,我沒有意識到有一個PCKG和一個PCKG_BODy,所以我失去了爲什麼右鍵點擊,我沒有得到下降/創建選項。它僅出現在PCKG而不是PCKG_body中。

0

您只需打開軟件包,更改過程的名稱並重新編譯。當你打開它,它應該說

create or replace package ... 

(如oposed創建或更換過程)

+0

好..我有一個包含大約10個SP的包,每個SP有大約2000行代碼。更重要的是,我如何創建或替換它。我使用SQL Developer,並沒有在菜單中看到任何命令,或者如果我右鍵單擊包。你能詳細說明嗎?謝謝 – Raghu 2012-03-21 22:07:08

+0

@Raghu我沒有特別使用SQL Developer,但是我使用的IDE只是瀏覽了所有包,選中了一個,右鍵單擊它,它將以「創建或替換包[packageName]」的方式打開。然後你去你的程序,重命名它,然後編譯整個程序包。之後,你應該確保沒有其他軟件包失效,如果有的話,重新編譯它們。這有幫助嗎? – 2012-03-21 22:20:37

3

您發佈內容:

create or replace procedure new_procedure_name as 
begin 
old_procedure_name; 
end; 

是做到這一點的一種有效方式。但是,這隻會導致你的問題。 old_procedure_namenew_procedure_name之間沒有明顯的聯繫(儘管顯然是相反的)。

更好的辦法是找到你的軟件包/程序存儲在你的版本控制系統上的地方。更改名稱,提交它,然後重新編譯軟件包。

無論是獨立的函數/過程還是包內的函數都適用。

重新編譯實際上是一個「下降」,因爲您必須用新的版本替換當前版本,即我完全同意您的鏈接問題。