Предположим, я использую табличного человека, и у людей может быть несколько фамилий, поэтому этот атрибут должен быть, например, массивом из 3 элементов (речь не о том, где хранить фамилии), вот простой sql для создания типа фамилия , таблица person и добавление строки примера в sql-разработчик oracle (11G XE):
create type lastn as varray(3) of varchar2(10);
CREATE TABLE person
(
ID NUMBER NOT NULL
, last_name lastn
, CONSTRAINT EXEMPLE_PK PRIMARY KEY
(
ID
)
ENABLE
);
insert into person values(1,lastn('dani','bilel'));
Я знаю, как обновить все фамилии сразу, но мне нужно сохранить существующие фамилии и добавить другие фамилии или удалить одну фамилию, не затрагивая остальные. Короче говоря, я хочу, чтобы мой код был похож (я не знаком с PL/SQL):
insert into table
(select last_name from example where id=1)
values lastn('new');
Это тот случай, когда я хочу получить людей, у которых первая фамилия «билель», а вторая фамилия — «дани».
select * from person where id in (select id from pernom p,table(p.last_name)
where column_value(1)='bilel' and column_value(2)='dani');
Я знаю, что это так не работает, но в этом случае я хочу знать операторы CRUD(create update delete). и оператор select с varray в операторе where.
Спасибо за ваш ответ.