2016-09-02 4 views
0

exsiting手続きを削除せずにパッケージに新しい手続き/関数を追加する可能性はありますか? create or replace package bodyを使用できますが、このステートメントはパッケージ内の既存のプロシージャー/関数を削除します。既存のプロシージャを削除せずに新しいプロシージャ/ファンクションをパッケージに追加するにはどうすればよいですか?

私のパッケージには多くの関数/プロシージャ(200行以上)が含まれているので、1つのファイルに保存するのは悪い考えです。読みにくいので、各ファイルを別々のファイルに保存して追加したいパッケージ化する。

私は、誰かがそれが不可能であると言う5年前の問題を発見しました。 それ以来、何か変わっているかもしれないし、もっと良い解決策があるかもしれないので、私は尋ねています。機能/手順の混乱を避けるための最良のアイデアは何ですか?

+2

できません。パッケージ本体は、単一のcreate文でのみ指定できます。有効な 'create package body'文を構築するためにそれらを連結しない限り、複数のファイルに分割することができます。 –

+0

@a_horse_with_no_name多分あなたは混乱を避けるために他のアイデアを知っていますか? – Ice

+1

200行は大きくありません。個々のpakcages /関数を呼び出すラッパーとしてパッケージを書くことができますが、そのリストは大きくなります。 – OldProgrammer

答えて

2

既存のプロシージャにコード行を追加する以上に、プロシージャ/ファンクションをパッケージに「追加」しないでください。代わりに、すべての変更は、パッケージ全体の古いバージョンをパッケージ全体の新しいバージョンに置き換えます。

代わりに、バージョン管理リポジトリにチェックインするテキストファイルにパッケージソース(パッケージの作成または置き換えを含む)全体を保存し、パッケージを変更するには常に以下の手順に従ってください。

  1. お気に入りのコードエディタを使用してソースファイルを編集します。
  2. スクリプトを実行して、データベース上のパッケージをコンパイルします。
  3. 試験。
  4. ソースファイルをバージョン管理リポジトリにチェックインします。

このようにすれば、何かを追加したいときに何も失うことはありません。

関連する問題