2012-01-24 8 views
3

oracleデータベースの増分スクリプトを作成します。 プロシージャー・シグニチャーを1つだけ変更したいのですが、それは本体であり、残りは同じままでなければなりません。プロシージャ・パッケージおよびパッケージ本体の変更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文はパッケージ全体を再コンパイルするために使用することができますが、それ

[...]既存のパッケージの宣言や定義を変更することはできません。パッケージを再宣言または再定義するには、OR REPLACE句を使用してCREATE PACKAGEまたはCREATE PACKAGE BODYを使用します。

+4

なぜこれがダウン投票になったのか知っていたら、私の答えを修正することができます。 –

+0

編集と質問を確認してください。私はパッケージから単一のプロシージャを変更したい、残りは手つかずのままです。 –

+4

それは問題ではありません。パッケージはデータベース内の単一オブジェクトです。本体内の単一の手続き/型/関数を置き換えることはできません。あなたは全身を定義する必要があります。パッケージ仕様に存在するプロシージャの定義を変更しているときにも、それを再定義する必要があります。 –

関連する問題