Как манипулировать объектами с наследованием в sql (oracle)? - PullRequest
0 голосов
/ 05 декабря 2018

Предположим, что у меня есть эта иерархия, как я могу манипулировать (добавлять, редактировать) агентом или клиентом?

CREATE TYPE TPRENOM AS varray(3) OF VARCHAR2(20);

CREATE TYPE tadr as object(
  cp int  not null,
  state varchar2(20),
  city varchar2(20),
  street varchar2(20),
  doorNum int
);

create type tperson as object(
  fname varchar2(20),
  lname tprenom,
  adress tadr,
  phoneNum varchar2(10),
  email varchar2(50)
)not final;

create type tutilisateur under tperson(
  username varchar2(20),
  password varchar2(20)
);

create table agent(
  id_ag int not null,
  infos tutilisateur not null
  , CONSTRAINT agent_pk PRIMARY KEY 
    (
      ID_ag
    )
  enable
);

create table client(
id_cl int  not null,
infos tperson  not null,
num_chec varchar2(30) not null,
 CONSTRAINT client_pk PRIMARY KEY 
  (
    ID_cl 
  )
  enable
);

Я пробовал это, но это не сработало:

insert into agent values(1, tutilisateur( tperson( 'name', tprenom('bilel', 
'dani','lastname3'), tadr(3,'state', 'miliana', 'hammama', 20), 
'2140547854', 'email@gmail.com'), 'username', 'password'));

insert into client values(0, tperson('name', tprenom('bilel', 'dani', 
'lastname3'), tadr(3,'state2','miliana','hammama',20)),'123456789');

При выводе sql выше отображается ошибка:

Ошибка SQL: ORA-02315: неверное количество аргументов для конструктора по умолчанию

00000 - «неверное количество аргументов для конструктора по умолчанию»

* Причина: число аргументов, указанное для конструктора по умолчанию, не соответствует количеству атрибутов типа объекта.

* Действие: Укажите правильное количество аргументов для конструктора по умолчанию и повторите операцию.

Я неправильно делаю наследование?

Спасибо за ваш ответ

1 Ответ

0 голосов
/ 06 декабря 2018

Хорошо, я нашел решение, я не могу поверить, насколько это было просто, вот как вставить в таблицу агента:

insert into agent 
values(1,tutilisateur('name',tprenom('bilel','dani','lastname3'),tadr(3,'ain 
delfa','miliana','hammama',20),'2140547854','email@gmail.com','username','password'));

Вот как вставить в таблицу клиента:

insert into client 
values(0,tperson('name',tprenom('bilel','dani','lastname3'),tadr(3,'ain 
delfa','miliana','hammama',20),'11225','email@gmail.com'),'123456789');
...