Департамент Информатики
Индивидуальная работа 1
Кишинев, 2021
19 Инвестирование свободных средств
Описание предметной области
Таблицы
Инвестиции (Код инвестиции, Код ценной бумаги, Код клиента, Котировка, Дата
покупки, Дата продажи ).
При эксплуатации базы данных стало понятно, что необходимо хранить историю
котировок каждой ценной бумаги. Кроме того, помимо вложений в ценные бумаги,
существует возможность вкладывать деньги в банковские депозиты.Внести в
структуру таблиц изменения, учитывающие эти факты, и изменить существующие
запросы. Добавить новые запросы.
DECLARE
c REF client_objtyp;
p REF papers_objtyp;
BEGIN
SELECT REF(z) INTO c FROM CLIENT_TAB z WHERE z.ID_CLIENT = 1;
SELECT REF(q) INTO p FROM PAPERS_TAB q WHERE q.ID_PAPER = 1;
INSERT INTO INVEST_TAB VALUES(invest_objtyp(1,c,p,10000,TO_DATE('01/01/2022','dd.mm.yyyy'),
TO_DATE('01/05/2022', 'dd.mm.yyyy')));
END;
DECLARE
c REF client_objtyp;
p REF papers_objtyp;
BEGIN
SELECT REF(z) INTO c FROM CLIENT_TAB z WHERE z.ID_CLIENT = 2;
SELECT REF(q) INTO p FROM PAPERS_TAB q WHERE q.ID_PAPER = 2;
INSERT INTO INVEST_TAB VALUES(invest_objtyp(2,c,p,50000,TO_DATE('01/01/2022','dd.mm.yyyy'),
TO_DATE('07/10/2022', 'dd.mm.yyyy')));
END;
select
ID_INVEST,
DEREF(ID_CLIENT_REF).CLIENT_NAME AS CLIENT_NAME,
DEREF(ID_CLIENT_REF).CLIENT_PROPERTY AS CLIENT_PROPERTY,
DEREF(ID_CLIENT_REF).CLIENT_ADRESS AS CLIENT_ADRESS,
DEREF(ID_PAPER_REF). ID_PAPER AS ID_PAPER,
DEREF(ID_PAPER_REF). PAPER_LAST_YEAR AS PAPER_LAST_YEAR,
DEREF(ID_PAPER_REF). PAPER_RATE AS PAPER_RATE,
INVEST_DATE_BUY,
INVEST_PRICE,
INVEST_DATE_SELL
FROM INVEST_TAB;
DECLARE
r REF client_objtyp;
BEGIN
SELECT REF(t) INTO r FROM CLIENT_TAB t WHERE ID_CLIENT = 1;
INSERT INTO CLIENTS_INVEST _TAB VALUES (r,INVEST_COLLECTION ());
END;
DECLARE
TYPE INVEST_COLL IS TABLE OF invest_objtyp;
COLL INVEST_COLL;
BEGIN
SELECT VALUE(p) BULK COLLECT INTO COLL FROM INVEST_TAB p WHERE
p.ID_CLIENT_REF.ID_CLIENT = 1;
FOR i in 1..COLL.count LOOP
INSERT INTO TABLE(SELECT p.INVEST_COLL FROM CLIENT_INVEST_TAB p WHERE
p.ID_CLIENT_REF.ID_CLIENT = 1) VALUES (COLL(i));
END LOOP;
END;
select
p.ID_CLIENT_REF.ID_CLIENT,
P.ID_CLIENT_REF.CLIENT_NAME,
p.ID_CLIENT_REF.CLIENT_PROPERTY,
COLL. INVEST_DATE_BUY,
COLL. INVEST_DATE_SELL,
COLL.ID_INVEST_REF.ID_INVEST
FROM CLIENTS_INVEST_TAB p
JOIN TABLE (p.INVEST_COLL) COLL
on p.id_client_ref.ID_CLIENT = COLL.id_client_ref.ID_CLIENT;
net number;
begin
net := 0;
time_t.id := CLIENT_ID;
select value(t) bulk collect into time_t.COLL from INVEST_TAB p.PAPER_TAB t where
p.id_client_ref.id_client = CLIENT_ID AND p.id_paper_ref.id_paper = t.id_paper ;
BEGIN
total_net (1);
END;
Begin
total_net (1);
end;
DECLARE
TYPE COLLECTION IS TABLE OF papers_objtyp;
COLL COLLECTION;
BEGIN
COLL := COLLECTION();
COLL.EXTEND;
COLL(1) := FIRST_LEVEL(5,1000,5,300,’Goody one paper’);
COLL.EXTEND;
COLL(2) := SECOND_LEVEL(6,23000,5,4300,’GREAT one paper’)
FOR i in 1..COLL.COUNT
loop
DBMS_OUTPUT.PUT_LINE(COLL(i).show ||' '|| COLL(i).SHOW(5));
END LOOP;
END;
Создание таблицы
Заполнение данными
Выводы:
Данная индивидуальная работа на практике укрепляет все полученные в
течении певрой части семестра знания и навыки ORACLE СУБД, такие как
создание типов, таблиц, использование ссылок и коллекций. Конфигурация,
построение базы данных, логистика и управление функционалом – все это
также оттачивает такая индивидуальная работа.