Alterando tipo on the fly

Versões recentes do Oracle indicam que você pode alterar tipo on the fly sem a necessidade de recriá-lo. Aqui temos um simples exemplo de como fazê-lo

SQL> create type T1 as object ( x number, y number ) not final;
  2  /Type created.SQL> create type T2 as table of T1;
  2  /Type created.SQL> create or replace type T1 as object ( x number, y number, z number );
  2  /create or replace type T1 as object ( x number, y number, z number );*ERROR at line 1:ORA-02303: cannot drop or replace a type with type or table dependents

Neste caso, você precisa utilizar a cláusula ALTER TYPE:

SQL> alter type T1 add attribute ( z number );alter type T1 add attribute ( z number )*ERROR at line 1:ORA-22312: must specify either CASCADE or INVALIDATE optionSQL> alter type T1 add attribute ( z number ) cascade;Type altered.