2012-01-24 19 views
3

我想爲我的oracle數據庫創建一個增量腳本。 我想只修改一個過程簽名,它的正文,其餘的應該保持不變。更改過程包和包體PL/SQL

如何在不使用創建或替換重新創建孔包的情況下完成此操作?


舊包

PROCEDURE LOAD_ITEMS(OUTCURSOR OUT SYS_REFCURSOR); 

新包

PROCEDURE LOAD_ITEMS(P_ID IN CHAR, OUTCURSOR OUT SYS_REFCURSOR); 

編輯:
通過增量腳本,我的意思是從以前的版本升級到這個腳本。 而我只想修改當前的程序,而不是所有的程序。

回答

16

如果你想在包規範來改變程序,那麼你需要用改變的代碼
CREATE OR REPLACE
整個包裝規格和身體。


雖然ALTER PACKAGE語句可用於重新編譯整個包,它

[...]不改變現有數據包的聲明或定義。要重新聲明或重新定義一個包,請使用CREATE PACKAGECREATE PACKAGE BODY聲明和OR REPLACE子句。

+4

會很高興知道爲什麼這是低票,所以我可以糾正我的答案... –

+0

請檢查編輯和問題。我想修改程序包中的一個程序,其他程序保持不變。 –

+4

沒關係。包是數據庫中的單個對象;您不能替換正文中的單個過程/類型/函數。你必須定義整個身體。當你改變package spec中存在的過程的定義時,你也必須重新定義它。 –