次のようなスタックの最後のエラーのみを報告していると思われます:
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "schema.package" has been invalidated
ORA-04065: not executed, altered or dropped package body "schema.package"
ORA-06508: PL/SQL: could not find program unit being called: "schema.package"
もしそうなら、それはあなたのパッケージがステートフルであるためです:
パッケージが(仕様または本体のいずれかで)宣言する変数、定数、およびカーソルの値は、そのパッケージ状態を構成します。 。 PL / SQLパッケージが少なくとも1つの変数、定数、またはカーソルを宣言している場合、そのパッケージはステートフルです。;それ以外の場合は、ステートレス 。
再コンパイルすると、状態は失われます:
インスタンス化されたステートフルパッケージの本体が再コンパイルされた場合(明示的に「ALTERPACKAGEステートメント」を使用して、または暗黙的に)、パッケージ内のサブプログラムを次に呼び出すと、Oracle Databaseは既存のパッケージ状態を破棄し、exceptionORA-04068を発生させます。
PL / SQLで例外が発生した後、パッケージへの参照により、Oracle Databaseはパッケージを再インスタンス化し、再初期化します...
パッケージに状態がある場合、これを回避することはできません。ただし、パッケージがステートフルである必要があることはかなりまれだと思います。そのため、パッケージで宣言したものはすべて、関数またはプロシージャの外で、そのレベルで本当に必要かどうかを確認する必要があります。ただし、10gを使用しているため、変数やカーソルだけでなく、定数も含まれます。
ただし、引用されたドキュメントの最後の段落は、次に同じセッションでパッケージを参照するときにエラーが発生せず、通常どおりに機能することを意味します(再度コンパイルするまで)。