Помощь в написании студенческих работ
Антистрессовый сервис

Структура таблиц. 
Создание хранимых процедур и представлений. 
Триггеры и привилегии

РефератПомощь в написанииУзнать стоимостьмоей работы

Alter table categories add (constraint categories_fk foreign key (race). Select count (*) into custnum from categories where categories. race =. Select * from categories, race where categories. race = race. race_id; Внешний ключ — идентификатор рейса. Класс с фиксированными тарифами', 5); Select categories.name as categories_name, race.name as race_name. Procedure categories_for_races… Читать ещё >

Структура таблиц. Создание хранимых процедур и представлений. Триггеры и привилегии (реферат, курсовая, диплом, контрольная)

Авиарейсы: race.

Название поля.

Описание поля.

Тип.

race_id.

Первичный ключ.

number (8), not null.

name.

Название рейса.

varchar (128).

Сервисные категории: categories.

Название поля.

Описание поля.

Тип.

id.

Первичный ключ.

number (8), not null.

name.

Название категории.

varchar (128).

race.

Внешний ключ — идентификатор рейса.

number (8), not null.

SQL-сценарии

Начальное заполнение.

drop table categories;

drop sequence seq_id_categories;

commit;

drop table race;

drop sequence seq_id_race;

commit;

/* рейсы */.

create sequence seq_id_race;

create table race (.

race_id number(8) not null,.

name varchar(128).

);

alter table race add (constraint race_pk primary key (race_id));

commit;

/* сервисные категории */.

create sequence seq_id_categories;

create table categories (.

categories_id number(4) not null,.

name varchar(128),.

race number(8) not null

);

alter table categories add (constraint categories_pk primary key.

(categories_id));

alter table categories add (constraint categories_fk foreign key (race).

references race (race_id));

commit;

create or replace package fill_everything is.

procedure fill_races;

procedure clear_races;

procedure clear_categories;

procedure fill_categories;

end fill_everything;

create or replace package body fill_everything is.

procedure clear_races is.

begin.

delete from race;

if sql % notfound then.

raise NO_DATA_FOUND;

end if;

exception.

when NO_DATA_FOUND then.

dbms_output.put_line ('No races found!');

end clear_races;

procedure fill_races is.

begin.

insert into race values (seq_id_race.nextval, 'ТИ 916');

insert into race values (seq_id_race.nextval, 'ЛА 161');

insert into race values (seq_id_race.nextval, 'ПЛ 541');

insert into race values (seq_id_race.nextval, 'С7 173');

insert into race values (seq_id_race.nextval, 'У6 100');

insert into race values (seq_id_race.nextval, 'ЮТ 569');

insert into race values (seq_id_race.nextval, 'УН 107');

insert into race values (seq_id_race.nextval, 'ГЛ 3338');

end fill_races;

таблица авиарейс ключ триггер представление.

procedure clear_categories is.

begin.

delete from categories;

if sql%notfound then.

raise NO_DATA_FOUND;

end if;

exception.

when NO_DATA_FOUND then.

dbms_output.put_line ('No companies found!');

end clear_categories;

procedure fill_categories is.

begin.

insert into categories values (seq_id_categories.nextval, 'первый класс.

улучшенный', 1);

insert into categories values (seq_id_categories.nextval, 'первый класс',.

1);

insert into categories values (seq_id_categories.nextval, 'первый класс со.

скидкой', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс.

улучшенный', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс со.

скидкой', 3);

insert into categories values (seq_id_categories.nextval, 'экономический.

класс улучшенный', 4);

insert into categories values (seq_id_categories.nextval, 'экономический.

класс с фиксированными тарифами', 5);

insert into categories values (seq_id_categories.nextval, 'экономический.

класс со скидкой', 6);

end fill_categories;

end fill_everything;

begin.

fill_everything.fill_races;

fill_everything.fill_categories;

end;

Начальные данные Рейсы:

select * from race;

Структура таблиц. Создание хранимых процедур и представлений. Триггеры и привилегии.

Категории сервиса:

select * from categories;

select * from categories, race where categories.race = race.race_id;

select * from categories, race where categories. race = race. race_id;

Триггер

Структура таблиц. Создание хранимых процедур и представлений. Триггеры и привилегии.

Триггер должен разрешать добавление только после 20-го числа.

drop trigger on_insert_race;

create or replace trigger on_insert_race.

before insert on race.

begin.

if to_char (sysdate,'dd')<'20' then.

raise_application_error (-20 999, 'You cannot insert entries to table «race» .');

end if ;

end;

При выполнении такого скрипта до 20-го числа появится исключение:

begin.

fill_everything.fill_races;

fill_everything.fill_categories;

end;

Представление Представление запрашивает данные из связанных таблиц. Представление должно ограничивать доступ к данным по столбцам и строкам.

create or replace view categories_race as.

select categories.name as categories_name, race.name as race_name.

from categories, race.

where (categories.race = race. race_id).

and (race.race_id = 2);

Второй пакет.

Структура таблиц. Создание хранимых процедур и представлений. Триггеры и привилегии.

Содержит вызовы процедур из первого пакета.

Содержит процедуру categories_for_races, которая выводит количества категорий для каждого рейса, кроме рейса, заданного в параметре.

create or replace package pack2 is.

procedure categories_for_races (except_race_name in VARCHAR);

procedure fill_all;

procedure clear_all;

end pack2;

create or replace package body pack2 is.

procedure categories_for_races (except_race_name in VARCHAR) is.

var_race_id number(8);

var_race_name varchar(128);

custnum number;

cursor c1 is.

select race. race_id as race_id, race.name as race_name.

from race.

where not race.name = except_race_name;

begin.

open c1;

FETCH c1 INTO var_race_id, var_race_name;

LOOP.

select count(*) into custnum from categories where categories. race =.

var_race_id;

dbms_output.put_line (var_race_name || ': ' || custnum);

FETCH c1 INTO var_race_id, var_race_name;

EXIT WHEN c1%NOTFOUND;

END LOOP;

CLOSE c1;

end categories_for_races;

procedure fill_all is.

begin.

fill_everything.fill_categories;

fill_everything.fill_races;

end fill_all;

procedure clear_all is.

begin.

fill_everything.clear_categories;

fill_everything.clear_races;

end clear_all;

end pack2;

Результаты запуска процедуры «categories_for_races»:

Показать весь текст
Заполнить форму текущей работой