Попробуйте и УДАЛИТЕ phone_list_type перед тем, как создавать его. Проблема возникает
когда вы уже скомпилировали код, который определяет ваш тип, и вы хотите изменить его (код / определение), например,
SQL> CREATE TYPE phone_type AS OBJECT (
2 country_code Number
3 , area_code Number
4 , phone_number Number
5 );
6 /
Type PHONE_TYPE compiled
SQL> CREATE TYPE phone_list_type AS VARRAY(3) of phone_type;
2 /
Type PHONE_LIST_TYPE compiled
SQL> CREATE TYPE phone_list_type AS VARRAY(3) of phone_type;
2 /
Error starting at line : 1 in command -
CREATE TYPE phone_list_type AS VARRAY(3) of phone_type;
Error report -
ORA-00955: name is already used by an existing object
00955. 00000 - "name is already used by an existing object"
*Cause:
*Action:
Oracle не просто «перезаписывает» существующее определение TYPE. Теперь вы можете отбросить тип и использовать новое определение:
SQL> drop type phone_list_type;
Type PHONE_LIST_TYPE dropped.
SQL> CREATE TYPE phone_list_type AS VARRAY(3) of phone_type;
2 /
Type PHONE_LIST_TYPE compiled
Если DROP TYPE ... не работает, вы также можете FORCE его
(см. документация ).