64K minextents 1 maxextents unlimited ) alter table SPONSORS add constraint SPONSORS_FK1 foreign key (ID_TOURN) references TOURNS (ID_TOURN) Создадим пакет, содержащий перечисленные процедуры. create or replace package pkg3 is.

Задание

Дана программа в СУБД Oracle (см. ниже). Приведите все команды определения данных (Data Definition Language), используемые в программе. Необходимо выделить в тексте программы, прокомментировать какое действие производится с объектом.



Создадим таблицы

create table TOURNS ( ID_TOURN NUMBER not null, TOURN_NAME VARCHAR2(80), COUNTRY VARCHAR2(50), COUNT NUMBER ) tablespace SYSTEM pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K minextents 1
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·Создадим пакет, содержащий перечисленные процедуры

create or replace package pkg3 is

-- Author : ADMIN
-- Created : 21.12.2013 13:32:14
-- Purpose :

-- Public type declarations
procedure ins1 ;

procedure del ;
procedure min_price(p_s in number) ;
procedure del2 ;
end pkg3;
create or replace package body pkg3 is procedure ins1 is begin insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (1, 'Тенисный турнир 1', 'США', 20); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (2, 'Тенисный турнир 2', 'Япония', 18); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (3, 'Тенисный турнир 3', 'США', 10); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (4, 'Тенисный турнир 4', 'Китай', 15); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (5, 'Тенисный турнир 5', 'Англия', 25); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (6, 'Тенисный турнир 6', 'Испания', 29); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (7, 'Тенисный турнир 7', 'РФ', 100); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (8, 'Тенисный турнир 8', 'Италия', 10); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (9, 'Тенисный турнир 9', 'РФ', 8); insert into TOURNS (ID_TOURN, TOURN_NAME, COUNTRY, COUNT) values (10, 'Тенисный турнир 10', 'Канада', 4); commit; insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (1, 'Рессо', 50000, 1); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (2, 'Трансаэро', 60000, 1); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (3, 'Тур-Вол', 70000, 3); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (4, 'Резерв', 5081, 2); in
·sert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (5, 'S7', 10000, 1); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (6, 'Прокто', 25000, 3); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (7, 'НОВОТВ', 100000, 4); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (8, 'ТВ5', 150000, 4); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (9, 'ТВ6', 10000, 4); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (10, 'Европа+', 5000000, 5); insert into SPONSORS (ID_SPONSOR, SPONSOR_NAME, SUMM, ID_TOURN) values (11, 'Иволга', 2000, 6); commit; end; --Включаем в пакет еще одну процедуру, которая, используя представление, выводит турниры, имеющие финансирование, меньше заданного в параметре.


procedure min_price(p_s in number) is v_tourn varchar(100); cursor c is select t.tourn_name into v_tourn from tourns t left join sponsors tt on tt.id_tourn=t.id_tourn group by t.tourn_name having sum(summ) --Процедура должна удалять из таблицы турнир с минимальным числом участников. procedure del2 is begin

Delete from SPONSORS where id_tourn in (select id_tourn from tourns t where t.count=(select min(count) from tourns));
end; end pkg3;


Создадим представление

create or replace view v1 as select t.tourn_name, nvl(sum(tt.summ),0) as s, t.country, t.count from tourns t left join sponsors tt on tt.id_tourn=t.id_tourn group by t.tourn_name, t.country, t.count



Создадим триггер



create or replace trigger tourns_bd before delete on tourns for each row declare d date; begin select trunc(sysdate) into d from dual; if to_char(d, 'dd')=20 then raise_application_error(-20001,'Сегодня 13е!!!'); rollback; end if; end tourns_bd;

Приложенные файлы

  • doc 7066467
    Размер файла: 48 kB Загрузок: 0

Добавить комментарий