ablog

不器用で落着きのない技術者のメモ

PL/SQL: ORA-00942: table or view does not exist

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 し直したから、権限なくなってたのか。