Материал: 2110

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

4.Вывести порядок приготовления блюда и название блюда с количе- ством углеводов больше определенного значения или количеством калорий больше указанного значения.

Вариант 7

1.Вывести список сотрудников с указанной должностью.

2.Вывести список документов, в содержании которых встречается ука- занный фрагмент слова.

3.Вывести дату регистрации, тип документа, ФИО регистратора и на- звание организации для документов, зарегистрированных в указан- ный период.

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

Вариант 8

1.Вывести список сотрудников с указанной причиной увольнения.

2.Вывести список документов с датой регистрации в указанный пери- од.

3.Вывести дату регистрации, причину увольнения, ФИО сотрудника для документов, зарегистрированных в указанный период.

4.Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.

Вариант 9

1.Вывести список сотрудников, бравших отпуск указанного типа.

2.Вывести список документов с датой регистрации в указанный пери- од.

3.Вывести дату регистрации, тип отпуска, ФИО сотрудника для доку- ментов, зарегистрированных в указанный период.

4.Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.

70

Вариант 10

1.Вывести список сотрудников с указанной должностью.

2.Вывести список документов, в содержании которых встречается ука- занный фрагмент слова.

3.Вывести дату регистрации, тип документа, ФИО отправителя и на- звание организации для документов, зарегистрированных в указан- ный период.

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

Вариант 11

1.Вывести список сотрудников, назначенных на указанную должность.

2.Вывести список документов с датой регистрации в указанный пери- од.

3.Вывести дату регистрации, должность, ФИО сотрудника для доку- ментов, зарегистрированных в указанный период.

4.Вывести список зарегистрированных документов с кодом документа в указанном диапазоне.

Вариант 12

1.Вывести список оборудования с указанным типом.

2.Вывести список оборудования, которое брал в прокат определенный клиент.

3.Вывести список лиц, бравших оборудование в прокат, отсортиро- ванный по количеству их обращений, а также количество этих обра- щений.

4.Вывести информацию о клиентах, отсортированных по адресам.

Вариант 13

1.Вывести список оборудования с указанным типом.

2.Вывести список оборудования, которое списал определенный со- трудник.

3.Вывести количество списанного оборудования, сгруппированного по типам оборудования.

4.Вывести информацию о сотрудниках с датой приема на работу больше определенной даты.

Вариант 14

1.Вывести список цветков с указанным типом листа.

2.Вывести список кодов поступлений, по которым продано цветов на суммы больше определенного значения.

3.Вывести дату поступления, сумму, названия поставщика и цветов по определенному коду поставщика.

4.Вывести список цветов и сорт для цветов с высотой больше опреде- ленного числа или цветущий.

71

Вариант 15

1.Вывести список клиентов, заехавших в номера в указанный период.

2.Вывести общую сумму оплат за номера для каждого клиента.

3.Вывести дату заезда, тип номера, ФИО клиентов, зарегистрирован- ных в указанный период.

4.Вывести список зарегистрированных клиентов в номерах определен- ного типа.

Вариант 16

1.Вывести список оборудования с указанным типом.

2.Вывести список оборудования, которое брал в прокат определенный клиент.

3.Вывести список лиц, бравших оборудование в прокат, и количество их обращений, отсортированных по количеству обращений по убы- ванию.

4.Вывести информацию о клиентах, отсортированных по адресам.

Вариант 17

1.Вывести список ценностей с закупочной стоимостью больше опре- деленного значения или сроком гарантии больше указанного числа.

2.Вывести список мест нахождения материальных ценностей, в назва- нии которых встречается указанное слово.

3.Вывести сумму стоимости ценностей с кодом в указанном диапазо- не.

4.Вывести список материально-ответственных лиц с датой приема на работу в указанном диапазоне.

Вариант 18

1.Вывести список ремонтных работ, выполненных определенным мас- тером.

2.Вывести список этапов работ, входящих в работы, в названии кото- рых встречается указанное слово.

3.Вывести сумму стоимости этапов ремонтных работ для работ с ко- дом в указанном диапазоне.

4.Вывести список мастеров с датой приема на работу в указанном диа- пазоне.

Вариант 19

1.Вывести список лекарств с определенным показанием.

2.Вывести список номеров чеков, по которым продано больше опреде- ленного числа лекарств.

3.Вывести дату продажи, сумму, ФИО кассира и лекарство по чеку с указанным номером.

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

72

Вариант 20

1.Вывести список сотрудников с указанной должностью.

2.Вывести список документов, в содержании которых встречается ука- занный фрагмент слова.

3.Вывести дату регистрации, тип документа, ФИО исполнителя и факт исполнения для документов, зарегистрированных в указанный пери- од.

4.Вывести список зарегистрированных документов с указанным типом документа или с кодом документа в определенном диапазоне.

Лабораторная работа №6

СОЗДАНИЕ ТРИГГЕРОВ В ORACLE

Цель работы научиться создавать и использовать триггеры в Oracle.

Содержание работы:

1.Проработка всех примеров, анализ результатов их выполнения в утилите SQL *Plus Worksheet. Проверка наличия созданных триггеров в текущей схеме.

2.Проверка всех выполненных примеров в утилите Enterprise

MANAGER Console.

3.Выполнение всех примеров и заданий по ходу лабораторной работы.

4.Выполнение индивидуальных заданий по вариантам.

Пояснения к выполнению работы

Для освоения программирования триггеров используем пример базы данных в табличном пространстве DB_Books, которая была создана в ла- бораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий таблиц и других объектов проекта.

Триггер базы данных это процедура PL/SQL, которая автоматически запускается при возникновении определенных событий, связанных с вы- полнением операций вставки, удаления или модификации данных табли- цы. Событие, управляющее запуском триггера, описывается в виде логиче- ских условий. Когда возникает событие, соответствующее условиям триг- гера, сервер Oracle автоматически запускает триггер, то есть интерпрети- рует код программы триггера, записанный на языке PL/SQL.

В основном триггеры используются для реализации сложных ограни- чений целостности данных, которые невозможно осуществить через опи- сательные ограничения, устанавливаемые при создании таблиц, организа- ции всевозможных видов аудита, автоматического оповещения других мо- дулей о том, что делать в случае изменения информации, содержащейся в

73

таблице БД, для реализации "бизнес-правил", для организации каскадных воздействий на таблицы БД.

Строковые и операторные триггеры

Синтаксис:

CREATE [OR REPLACE] TRIGGER имя_триггера

BEFORE | AFTER активизирующее_событие ON ссылка_на_таблицу FOR EACH ROW [WHEN условие_срабатывания]

тело_триггера

где активизирующее_событие указывает момент активации триггера BEFORE до срабатывания оператора DML, а AFTER после срабатыва- ния оператора DML.

FOR EACH ROW указывает на активацию триггера от воздействия на каждую строку в наборе строк, без этого указателя триггер запускается по- сле или до оператора DML в целом.

Порядок активации триггеров в большинстве случаев таков:

1)Выполняется операторный триггер BEFORE (при его наличии).

2)Для каждой строки, на которую воздействует оператор:

-выполняется строковый триггер BEFORE (при его наличии);

-выполняется собственно оператор;

-выполняется строковый триггер AFTER (при его наличии).

3)Выполняется операторный триггер AFTER (при его наличии).

Псевдозаписи

При создании строковых триггеров можно использовать псевдозаписи :old и :new. Строковый триггер срабатывает один раз для каждой строки. При этом внутри триггера можно обращаться к строке, обрабатываемой в данный момент времени, применяя псевдозаписи.

Например:

CREATE OR REPLACE TRIGGER ADMIN_BOOKS.Trigger1 BEFORE DELETE ON ADMIN_BOOKS.Authors FOR EACH ROW DECLARE

a ADMIN_BOOKS.Authors.Code_author%TYPE;

b ADMIN_BOOKS.Authors.Name_Author%TYPE; c ADMIN_BOOKS.Authors.Birthday%TYPE;

BEGIN

a:= :old.Code_author; b:= :new.Name_Author; c:= :old.Birthday;

74