Задание:
I. Создать объекты:
СТУДЕНТ (id, фамилия, имя,
специальность, кредиты)
• Создать метод ORDER для объекта студент,
который сортирует сведения о студентах по именам и фамилиям.
II. Создать объекты:
АУДИТОРИЯ (id, № аудитории,
кол-во мест, описание)
• Отредактировать с мощью метода MAP аудитории по номерам id.
III. Создать объект:
УЧЕБНАЯ ГРУППА (id, факультет,
курс, описание, max кол-во студентов, реальное кол-во студентов, кол-во
кредитов, ссылка на аудиторию)
Решение:
I.
create or
replace TYPE STUDENT
as OBJECT(
id
number(5),
fam
varchar2(15),
imea
varchar2(10),
spets
varchar2(30),
kr
number(3),
ORDER
MEMBER function SORT (v_student in student) return number
);
create or replace type
BODY
STUDENT is
ORDER
member function SORT (v_student in student) return number as
begin
if self.fam = v_student.fam
then
if self.imea
> v_student.imea then
return
1;
elsif self.imea < v_student.imea then
return
-1;
else
return
0;
end if;
else
if self.fam
> v_student.fam then
return
1;
elsif self.fam
< v_student.fam then
return
-1;
else
return
0;
end if;
end if;
end sort;
END;
create table STUD (
person STUDENT
);
II.
create or
replace TYPE AUDITORIA
as OBJECT(
id
number(4),
kab
number(3),
mesta
number(3),
opis
varchar2(200),
MAP member
function SORT return number
);
create or replace type
BODY
AUDITORIA is
MAP member function SORT return
number as
begin
return SELF.id;
end SORT;
END;
create table AUD (
place AUDITORIA
);
III.
create or
replace TYPE GRUPPA
as OBJECT(
id
number(4),
fac
varchar2(30),
kurs
number(1),
opis
varchar2(200),
max
number(4),
real
number(3),
kr
number(3),
a REF
AUDITORIA
);
_______________________________________________________________________________________
insert into STUD
values(STUDENT(1,'Ivanov','Ivan','Himia',123));
insert into STUD values(STUDENT(9,'Rusu','Stepan','Matematica',456));
insert into STUD values(STUDENT(2,'Sidorov','Vasea','Informatica',789));
select S.person.imea, S.person.fam from STUD S
order by S.person DESC;
insert into AUD
values(AUDITORIA(7,203,20,'Informatica_lab'));
insert into AUD
values(AUDITORIA(4,213,80,'Istoria_lektsii'));
insert into AUD values(AUDITORIA(8,118,50,'Himia_Seminar'));
select A.place.id, A.place.opis from AUD A
order by A.place ASC;
_______________________________________________________________________________________