2016-12-08 7 views
-1

多くのストアドプロシージャを含むsqlパッケージがあります。異なる名前のOracleパッケージをコンパイルするとどうなりますか?

create or replace package body My_Pck is 
    /** Package started **/ 

    /** Procedure 1 **/ 
    procedure one() as 
    begin 
    end; 

    /** Procedure 2 **/ 
    procedure one() as 
    begin 
    end; 
My_Pck end; 

このパッケージを別の名前でコンパイルするとどうなりますか?新しいパッケージに含まれる他のプロシージャは、元のプロシージャを上書きしますか?私は多くを検索しましたが、適切なansを取得しないでください。

どのような提案も非常に役に立ちます。

+4

あなたがdiffirent名前でパッケージをコンパイルする場合は、2つのパッケージを取得します。なぜパッケージを別の名前でcompeleしたいのですか?最初の名前がうまく選択されておらず、2番目の名前がうまく選択されていれば、最初のパッケージを削除できます。 – wieseman

+1

パッケージはカプセル化をサポートします - パッケージ内のすべてのプロシージャはパッケージに属します...異なるパッケージは同じ名前のプロシージャを持つことができますが、これは異なるプロシージャになります... – are

+0

最初のパッケージはアプリケーションで使用されます。私はパッケージを少し修正しました。だから私は別の名前でパッケージをコンパイルする必要がテスト目的のために。 – Pirate

答えて

0

ここでポイントを理解する必要があります。

パッケージは、基本的にプロシージャ、関数などの集合です。パッケージ内で定義されたプロシージャは、修飾子パッケージ名を指定せずに独立して呼び出すことはできません。これらのプロシージャは、常にpackage.procedureとして使用されます。

あなたのパッケージを考慮してください。 My_Pck.oneのようなプロシージャを呼び出すことができます。

create or replace package body My_Pck is 
/** Package started **/ 

/** Procedure 1 **/ 
procedure one() as 
begin 
end; 

/** Procedure 2 **/ 
procedure one() as 
begin 
end; 
My_Pck end; 

以下のように別の名前のパッケージをコンパイルすると、my_pck2.oneというプロシージャを呼び出す必要があります。

create or replace package body My_Pck2 is 
/** Package started **/ 

/** Procedure 1 **/ 
procedure one() as 
begin 
end; 

/** Procedure 2 **/ 
procedure one() as 
begin 
end; 
My_Pck end; 

おかげ

関連する問題