Package Body をコンパイルすると、
SQL> conn smith/smith
SQL> @FOO_PKG.SQL
Warning: Package Body created with compilation errors.
エラーの内容を確認してみると、
SQL> show errors Errors for PACKAGE BODY FOO_PKG: LINE/COL ERROR -------- ----------------------------------------------------------------- 9/3 PL/SQL: SQL Statement ignored 9/14 PL/SQL: ORA-00942: table or view does not exist 10/3 PL/SQL: SQL Statement ignored 10/14 PL/SQL: ORA-00942: table or view does not exist 11/3 PL/SQL: SQL Statement ignored 11/14 PL/SQL: ORA-00942: table or view does not exist 12/3 PL/SQL: SQL Statement ignored 12/14 PL/SQL: ORA-00942: table or view does not exist 13/3 PL/SQL: SQL Statement ignored 13/14 PL/SQL: ORA-00942: table or view does not exist 14/3 PL/SQL: SQL Statement ignored LINE/COL ERROR -------- ----------------------------------------------------------------- 14/14 PL/SQL: ORA-00942: table or view does not exist 15/3 PL/SQL: SQL Statement ignored 15/14 PL/SQL: ORA-00942: table or view does not exist 16/3 PL/SQL: SQL Statement ignored 16/14 PL/SQL: ORA-00942: table or view does not exist 17/3 PL/SQL: SQL Statement ignored 17/14 PL/SQL: ORA-00942: table or view does not exist 18/3 PL/SQL: SQL Statement ignored 18/14 PL/SQL: ORA-00942: table or view does not exist
ORA-00942 が出てる。
パッケージ内で使っているテーブルを参照できるか確認してみると、
SQL> desc SCOTT.EMP ERROR: ORA-04043: object "SCOTT"."EMP" does not exist
ありゃ、ダメじゃん。
パッケージ内で使ってる他のスキーマに対する権限を付与して、
SQL> conn / as sysdba
SQL> @grant_foo.sql
コンパイルし直すと、
SQL> conn smith/smith SQL> @FOO_PKG.SQL Package body created.
でけた。
元々、権限付与したけど、参照先のオブジェクトを所有するスキーマを drop して、import し直したから、権限なくなってたのか。