teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

package および package body の定義を追加しました。

2019/01/09 09:45

投稿

bkb
bkb

スコア13

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,58 @@
1
1
  既存のファンクションを利用して、PL/SQLでスクリプトを作成しているのですが
2
2
  下記のエラーが発生します。
3
3
 
4
-      __PLS-00201: 識別子xxx.xxxxを宣言してください。__
4
+      __PLS-00201: 識別子xxxx.aaaaを宣言してください。__
5
+      __PLS-00201: 識別子xxxx.bbbbを宣言してください。__
5
6
 
6
- xxx:パッケージ名, xxxx:ファンクション名 です
7
+ xxxx:パッケージ名, aaaa, bbbb:ファンクション名 です
7
8
 
8
9
  ファンクションはパッケージ化されており、同パッケージ内のプロシージャは実行可能です。
10
+ CREATE PACKAGE と CREATE PACKAGE BODYの定義は下記の通りです。(xxx:スキーマ名です)
11
+ ```PL/SQL
12
+ --ファイル1.sql(CREATE PACKAGE)
13
+ create or replace package xxx.xxxx as
14
+
15
+ TYPE TABChar is Table of VARCHAR2(1000) INDEX BY BINARY_INTEGER;
16
+
17
+ (略)
18
+ FUNCTION aaaa(aaa IN VARCHAR2) RETURN TABChar;
19
+ (略)
20
+
21
+ end xxxx;
22
+ /
23
+ ```
24
+ ```PL/SQL
25
+ --ファイル2.sql(CREATE PACKAGE BODY)
26
+ create or replace package body xxx.xxxx
27
+ as
28
+
29
+ FUNCTION bbbb(bbb OUT VARCHAR2) RETURN BOOLEAN
30
+ IS
31
+  (略)
32
+ BEGIN
33
+  (略)
34
+ EXCEPTION
35
+  (略)
36
+ RETURN FALSE;
37
+ END;
38
+
39
+ FUNCTION aaaaa(aaa IN VARCHAR2) RETURN TABChar
40
+ IS
41
+  (略)
42
+ BEGIN
43
+  (略)
44
+ RETURN XXXX;
45
+ EXCEPTION
46
+  (略)
47
+ END;
48
+
49
+ end xxxx;
50
+ /
51
+ SHOW ERROR
52
+ ```
9
53
  原因を権限不足と仮定して対処してみましたが、下記の通りの結果です。
10
54
 
11
- - 実行ユーザにファンクション実行権限を付与(grant execute on xxx.xxxx to USER;)
55
+ - 実行ユーザにファンクション実行権限を付与(grant execute on xxxx.aaaa to USER;)
12
56
  →__ORA-04042: プロシージャ、ファンクション、パッケージ、パッケージ本体が存在しません。__
13
57
 
14
58
  下記のとおり他にも確認してみましたが、いずれも実行不可でした。