En Oracle Database 10g, ¿es posible crear un tipo de matriz asociativa fuera de un paquete o procedimiento? Me gustaría poder hacer esto para poder hacer referencia a este tipo de matriz asociativa en otro tipo. Por ejemplo:¿Es posible crear un tipo de matriz asociativa de Oracle fuera de un paquete/procedimiento?
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;
El error que consigo es:
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>
Parece que Oracle considera:
index by varchar2(10)
para ser PL/SQL y doens't permitir que en la creación de Tipos SQL Si Oracle realmente no permite que las matrices asociativas se definan fuera de los paquetes, ¿existe una buena alternativa? ¿Es posible crear tipos que extiendan el Objeto de Oracle dentro de un paquete para que todos los tipos estén definidos en el mismo paquete?
Gracias, Jeff
Editar: Se ha corregido ejemplo de código, añaden registro, añaden como posible alternativa cuestión.
¿Cuándo obtiene el error? Acabo de crear los dos tipos anteriores sin queja de Oracle, 10gR2. Su ejemplo dice INDEX BY VARCHAR2, no pls_integer ... – DCookie
Agregó más detalles y correcciones. ¡Gracias! – jlpp