Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ist es möglich, einen assoziativen Array-Typ von Oracle außerhalb eines Pakets/einer Prozedur zu erstellen?

Die Antwort ist nein, Sie können nicht das tun, was Sie zu tun versuchen, genauso wenig wie Sie einen Typ erstellen können, um eine BOOLEAN-Typ-Variable zu einem Objekt hinzuzufügen. Die Elemente in einem Objekt müssen Oracle-Typen enthalten, keine PL/SQL-Typen. Eine etwas klobige Alternative könnte sein:

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 t_aa))
                               NOT INSTANTIABLE NOT FINAL;

Speichern Sie Ihre zugehörigen Variablenpaare in den beiden VARRAYs. Sie müssen die größtmögliche Größe Ihrer Arrays kennen.