パッケージ/プロシージャの外部でOracleの連想配列型を作成することは可能ですか?

Oracle Database 10gでは、パッケージまたはプロシージャの外に連想配列型を作成できますか。この連想配列型を別の型で参照できるように、これを実行したいと思います。例えば:

create type my_type_map is table of varchar2(10) index by varchar2(10);

create type my_other_type as object (   
    id number(15),
    member procedure initialize(p_my_type_map my_type_map)
) not instantiable not final;

私が得るエラーは:

SQL> create type my_type_map is table of varchar2(20) index by varchar2(10);
  2  /

Warning: Type created with compilation errors.

SQL> show errors;
Errors for TYPE MY_TYPE_MAP:

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PL/SQL: Compilation unit analysis terminated
1/21     PLS-00355: use of pl/sql table not allowed in this context
SQL> 

Oracleは次のように考えているようです。

index by varchar2(10)    

PL / SQLであり、SQL型の作成には使用できません。 Oracleがパッケージの外部で連想配列を定義することを本当に許可していないのであれば、良い代替策はありますか?すべての型が同じパッケージ内で定義されるように、パッケージ内でOracleのObjectを拡張する型を作成することは可能ですか?

ありがとう、
ジェフ

編集:コードサンプルを修正し、ログを追加し、質問として可能な選択肢を追加しました。

ベストアンサー
答えは「いいえ」です。自分がやろうとしていることはできません。オブジェクトにBOOLEAN型付き変数を追加するための型を作成できる以上のことはできません。オブジェクト内の項目には、PL / SQL型ではなく、Oracle型を含める必要があります。少しぎこちない代替案は次のようになります。

CREATE TYPE t_aa AS VARRAY(10) OF VARCHAR2(10);

CREATE OR REPLACE TYPE t_ua AS OBJECT (ID NUMBER(15)
                                     , MEMBER PROCEDURE initialize(p_aa t_aa)
                                     , MEMBER PROCEDURE initialize(p_aa_i taa))
                               NOT INSTANTIABLE NOT FINAL;

関連付けられた変数のペアを2つのVARRAYに格納します。あなたはあなたの配列の最大可能サイズを知る必要があるでしょう。

転載記事の出典を記入してください: パッケージ/プロシージャの外部でOracleの連想配列型を作成することは可能ですか? - コードログ