Создание Varray - PullRequest
       7

Создание Varray

0 голосов
/ 07 июля 2019

У меня проблема с домашним заданием, и я застрял на части B. Я выполнил часть A без проблем, но продолжаю получать ошибку для части B.

A.Определите пользовательский тип данных типа объекта с именем phone_type с атрибутами COUNTRY_CODE, AREA_CODE и PHONE_NUMBER.

B. Определить пользовательский тип данных VARRAY с именем Phone_List_type как массив размера три типа phone_type.

Ответ для A:

CREATE TYPE phone_type AS OBJECT (country_code Number, area_code Number, phone_number Number);

Результат:Тип phone_type скомпилирован

Ответ для B.

CREATE TYPE phone_list_type AS VARRAY(3) of phone_type;

Сообщение об ошибке: имя уже используется в существующем объекте

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Используйте CREATE OR REPLACE TYPE вместо CREATE TYPE:

CREATE OR REPLACE TYPE phone_list_type AS VARRAY(3) of phone_type;
0 голосов
/ 07 июля 2019

Попробуйте и УДАЛИТЕ 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 его (см. документация ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...