質問: SQL言語リファレンス CREATE TYPR を参考に。 ``` SQL> CREATE OR REPLACE TYPE TYPE1 AS TABLE OF VARCHAR2(8) ; 2 / 型が作成されました。 ... とTYPEを作れます。 このタイプはPACKAGEの中だけで使うので、PACKAGEに移動したら ``` PL/SQL SQL> CREATE OR REPLACE PACKAGE PACKAGE1 2 IS 3 TYPE TYPE1 AS TABLE OF VARCHAR2(8) ; -- 中略 4 END PACKAGE1 ; 5 / ``` 警告: パッケージが作成されましたが、コンパイル・エラーがあります。 SQL> SHOW ERROR PACKAGE PACKAGE1 PACKAGE PACKAGE1のエラーです。 LINE/COL ERROR -------- ----------------------------------------------------------------- 3/19 PLS-00103: 記号"TABLE"が見つかりました。 次のうちの1つが入るとき: object opaque ``` とエラーになってしまいます。 なぜエラーになるのでしょうか?
回答: AS を IS に変更したら通りました。 ``` SQL> CREATE OR REPLACE PACKAGE PACKAGE1 2 IS 3 TYPE TYPE1 **IS** TABLE OF VARCHAR2(8) ; 4 END PACKAGE1 ; 5 / パッケージが作成されました。 ``` なんてことだ。PACKAGE の中のTYPE宣言でASが対応していないなんて。 Oracle社カスタマ・サポート・センターにねじ込んでやる。 クレームが多ければバグ修正にうごいてくれますから、みなさんもサポート契約が有効な方はサポートにクレームをあげてください。