‘SET’ должен быть типом

#sql #oracle

#sql #Oracle

Вопрос:

Я создал следующие типы :

 CREATE TYPE Adress AS Object (Street varchar2(50), PostalC number, Ville varchar2(50));
CREATE TYPE PhoneNumber;
 

У человека может быть набор телефонных номеров, когда я пытаюсь создать тип Person :

 CREATE TYPE Person AS Object (FirstName varchar2(50), LastName varchar2(50), Adr Adress, Mobile SET(PhoneNumber));
 

Я получаю следующую ошибку :

Ошибки: ВВЕДИТЕ строку PERSON/ Col: 0/0 PL / SQL: Завершенная строка анализа единицы компиляции / Col: 1/90 PLS-00488: ‘SET’ должен быть типом

Комментарии:

1. Какую версию Oracle вы используете?

2. @Dai Я работаю над Oracle Live SQL.

3. кажется, вы смущены тем, у MySQL которого есть такой синтаксис для создания таблицы.

Ответ №1:

Если вам нужен массив телефонных номеров для каждого пользователя, определите тип телефонного номера в виде вложенной таблицы:

 create or replace type address as object (
  street varchar2(50), postalc number, ville varchar2(50)
);
/

create or replace type phonenumber as table of varchar2(20);
/

create or replace type person as object (
  firstname varchar2(50), lastname varchar2(50), 
  adr address, mobile phonenumber
);