備忘録

おかしなエラーメッセージ

仕様部に RELIES_ON をつけると変なメッセージがでてエラーとなる。

SQL> CREATE OR REPLACE PACKAGE P IS
2 FUNCTION F RETURN NUMBER
3 RESULT_CACHE RELIES_ON (EMPLOYEES)
4 ;
5 END P;
6 /

警告: パッケージが作成されましたが、コンパイル・エラーがあります。

SQL>
SQL> show error
PACKAGE Pのエラーです。

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/1 PL/SQL: Declaration ignored
2/10 PLS-00999: 実装制限(おそらく一時)RELIES_ON clause is disallowed
on function declaration



「そらく一時」 って何よ。製品なんだからもうちょっとましなメッセージあるんじゃない?

本体にだけ RESULT_CACHE をつけるとこんなメッセージがでる。

SQL> CREATE OR REPLACE PACKAGE P IS
2 FUNCTION F RETURN NUMBER
3 ;
4 END P;
5 /

パッケージが作成されました。

SQL>
SQL> show error
エラーはありません。
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY P IS
2 FUNCTION F RETURN NUMBER
3 RESULT_CACHE RELIES_ON (EMPLOYEES)
4 IS
5 BEGIN
6 RETURN 1;
7 END;
8
9 END P;
10 /

警告: パッケージ本体が作成されましたが、コンパイル・エラーがあります。

SQL>
SQL> show error
PACKAGE BODY Pのエラーです。

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/1 PL/SQL: Item ignored
2/10 PLS-00741:
RESULT_CACHEはサブプログラムFの宣言および定義で指定する必要があり
ます



正しい書き方はこう。

CREATE OR REPLACE PACKAGE P IS
FUNCTION F RETURN NUMBER
RESULT_CACHE
;
END P;
/

show error

CREATE OR REPLACE PACKAGE BODY P IS
FUNCTION F RETURN NUMBER
RESULT_CACHE RELIES_ON (EMPLOYEES)
IS
BEGIN
RETURN 1;
END;

END P;
/

show error

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ncdkayak.blog.fc2.com/tb.php/14-9a0843e9
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad