Контрольная работа


Общая часть задания

Создать две таблицы, имеющие уникальные поля и первичные ключи. Таблицы должны быть связаны с помощью внешнего ключа.

Для одной из таблиц разработать триггер для обеспечения дополнительных действий при изменение данных таблицы (см. свой вариант задания).

Создать представление для связанных таблиц, которое позволяет вывести только часть полей и часть строк таблиц.

Создать пакет PL/SQL, содержащий процедуру начального заполнения таблиц данными (по 5-7 записей в таблице) и процедуру очистки таблиц (удаления записей).

Добавить в пакет процедуру (см. свой вариант задания) изменения данных в таблицах. Значения изменяемых данных должны передаваться в процедуру как параметры.

В процедурах предусмотреть обработку исключений.

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


Варианты задания на выполнение контрольной работы

0. В таблицах должны содержаться данные о Строительных компаниях и Газопроводах. Одна компания может строить несколько газопроводов. Компании должны иметь номер, наименование и страну размещения. Газопроводы должны иметь номер, наименование и стоимость строительства. Процедура должна увеличить стоимость строительства газопроводов для двух компании с наименьшими стоимостями своих строительных работ; процент увеличения задать в параметре процедуры. Триггер должен запрещать изменения 13-го числа. Включить в пакет еще одну процедуру, которая, используя представление, выводит компании и количества и суммарные стоимости их газопроводов.

1. В таблицах должны находиться данные о Компьютерных фирмах и Типах компьютеров. Компьютеры каждого типа можно приобрести в нескольких фирмах. Фирмы должны иметь номер, название и город размещения. Компьютеры должны иметь номер, тип и рабочую частоту. Процедура должна удалить компьютер с самой низкой частотой и все фирмы, в которых продавался этот компьютер. Триггер должен разрешать удаление только собственнику таблицы. Включить в пакет еще одну процедуру, которая выводит компьютеры и количества фирм, продающих компьютеры этого типа; выводиться должны компьютеры, для которых количество фирм более заданного в параметре.

2. Внести в таблицы данные о Морских круизах и Страховых компаниях. Страховая компания может обслуживать несколько круизов. Круизы должны иметь номер, порт отправления и сумму страховки. Компании должны иметь номер, наименование и страну размещения. Процедура должна удалить круизы для компании с максимальным четным номером. Триггер должен регистрировать удаление с указанием пользователя, даты и времени операции. Включить в пакет еще одну процедуру, которая выводит компании, количества обслуживаемых круизов и средние суммы их страховки, кроме компании, указанной в параметре.

3. Занести в таблицы данные о Научных конференциях и Организаторах. Каждая конференция может иметь несколько организаторов. Конференции должны иметь номер, наименование и число участников. Организаторы должны иметь номер, наименование и бюджеты финансирования. Процедура должна изменять первичный ключ конференции, при этом ее организаторы не должны потеряться. Триггер должен регистрировать изменение с указанием пользователя, даты и времени операции, если значение ключа увеличивается. Включить в пакет еще одну процедуру, которая, используя представление, выводит конференции и количества их организаторов; в вывод должны попадать конференции с количеством организаторов, не менее, чем задано в параметре.

4. Требуется обрабатывать данные о Телефонных компаниях и Услугах связи. Компания предоставляет несколько видов услуг. Компании должны иметь номер, наименование и количество абонентов. Услуги должны иметь номер, наименование и тариф. Процедура должна добавлять новую компанию и ее услугу; данные о компании и услуге должны быть переданы в параметрах процедуры. Триггер должен разрешать добавление, если число компаний на момент добавления не превышает семи. Включить в пакет еще одну процедуру, которая выводит компании, количества и средние тарифы предоставляемых услуг; выводиться должны компании, для которых средние тарифы попадают в диапазон, заданный в параметрах.

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

6. Таблицы должны содержать данные об Издательствах и их Спонсорах, причем каждый спонсор может финансировать несколько издательств. Издательства должны иметь номер, наименование и сумму спонсорской помощи. Спонсоры должны иметь номер, наименование и страну пребывания. Процедура должна изменять спонсорскую помощь тем издательствам, чей спонсор размещается в указанной стране; страну и сумму изменения задать в параметре процедуры. Триггер должен регистрировать изменение с указанием пользователя, даты и времени операции, если сумма помощи увеличивается. Включить в пакет еще одну процедуру, которая выводит N самых щедрых спонсоров; N должно передаваться как параметр процедуры. Выводиться должны спонсоры и их суммарная спонсорская помощь.

7. Занести в таблицы данные о Кинофильмах и Киностудиях. Каждая киностудия может снимать несколько фильмов. Кинофильмы должны иметь номер, наименование и бюджет. Киностудии должны иметь номер, наименование и страну пребывания. Процедура должна добавлять новую киностудию и ее фильм без указания бюджета; данные о киностудии и фильме должны быть переданы в параметрах процедуры. Триггер должен регистрировать добавление с указанием пользователя, даты и времени операции. Включить в пакет еще одну процедуру, которая, используя представление, выводит киностудии и снимающиеся на них фильмы. Для каждой студии должны выводиться только фильмы с минимальным и максимальным бюджетами.

8. Поместить в таблицы информацию о Клубах кинологов и Породах собак. Собаку любой породы можно приобрести в нескольких клубах. Клубы должны иметь номер, наименование и диапазон цен продажи щенков. Породы должны иметь номер, наименование и тип. Процедура должна удалять породы, которые продаются в наименьшем числе клубов. Триггер должен разрешать удаление, если количество пород в таблице не менее пяти. Включить в пакет еще одну процедуру, которая выводит количество клубов, где можно приобрести собаку указанной породы, и название клуба, в котором нижняя граница цены минимальна.

9. Поместить в таблицы информацию об Автомобильных фирмах и Странах. Каждая фирма может иметь офисы в нескольких странах. Фирмы должны иметь номер, наименование и страну принадлежности. Страны должны иметь номер, наименование и число выпускаемых автомобилей. Процедура должна изменять число выпускаемых в каждой стране автомобилей для фирмы с максимальным номером, кратным трем; величину изменения передавать в параметре процедуры. Триггер должен разрешать изменение только собственнику таблицы. Включить в пакет еще одну процедуру, которая выводит суммарное количество выпускаемых автомобилей заданная в параметре фирма, а также страны, где она имеет свои офисы.
=============================================

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

Тема 1: Типы данных SQL Oracle. Выборка данных из объединенных таблиц.
Стандартные функции. Арифметические и логические выражения.
(в лекциях см. п. 2, 1.4, 3 1.1)
Тема 2: Агрегатные функции. Группировка строк. Сортировка строк. Подзапросы
(в лекциях см. п.3.1.1)
Тема 3: Представления
(в лекциях см. п.3.3.3).

Задание:
Вариант 0.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 200, если они находятся не в Риме
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и
имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и не в
Нью-Йорке.
3. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с
сортировкой по возрастанию рейтингов.
4. Напишите запрос, который выводит все заказы, сумма которых меньше средней
по всем заказам, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах из Берлина.
Вариант 1.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 100, если они находятся не в Лондоне
2. Напишите запрос, который вывел бы для каждого заказа на 3 января его
номер, стоимость заказа, имя продавца и размер комиссионных, полученных
продавцом за этот заказ.
3. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с
сортировкой по убыванию рейтингов.
4. Напишите запрос, который выводит все заказы, сумма которых больше средней
по все заказам, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях из Лондона.
Вариант 2.
1. Напишите запрос к таблице Покупателей для выборки данных, при этом
рейтинг должен быть не ниже 200, кроме покупателей из Лондона.
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость
и имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и
не в Риме.
3. Напишите запрос, который выбрал бы наименьший рейтинг в каждом городе с
сортировкой по убыванию названий городов.
4. Напишите запрос, который выводит имена и города всех продавцов, у которых
процент комиссионных больше, чем у Serresa, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях с заказами 3 числа.
Вариант 3.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 200, если не находятся в Риме
2. Напишите запрос, который вывел бы для каждого заказа на 4 и 6 января его
номер, стоимость заказа, имя продавца и размер комиссионных, полученных
продавцом за этот заказ.
3. Напишите запрос, который выбрал бы средние комиссионные в каждом городе с
сортировкой по возрастанию названий городов.
4. Выведите имена и города всех заказчиков с рейтингом, отличным от Grassa,
используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях с рейтингом 100.
Вариант 4.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой ниже 300, если они не из Берлина
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и
имя заказчика. Данные вывести для заказчиков, размещенных не в San Jose и не
в Berlin.
3. Напишите запрос, который выбрал бы наибольший номер заказа на каждое
число с сортировкой по возрастанию номеров заказов.
4. Напишите запрос, который выводит имена и города всех продавцов, у которых
процент комиссионных меньше, чем у Serresa, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах не из Лондона.
Вариант 5.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой не выше 100, если они не из San Jose
2. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 4
января) его номер, стоимость заказа, имя продавца и размер комиссионных,
полученных продавцом за этот заказ.
3. Напишите запрос, который выбрал бы наибольший номер заказа на каждое
число с сортировкой по убыванию чисел.
4. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Grassa,
используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях не из Рима.
Вариант 6.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 200, если они не находятся в San Jose
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость в
рублях (по текущему курсу) и имя заказчика. Данные вывести для заказчиков,
размещенных в Лондоне и в Риме.
3. Напишите запрос, который выбрал бы наименьший номер заказа на каждое
число с сортировкой по убыванию чисел.
4. Напишите запрос, который выводит имена и города всех продавцов, у которых
процент комиссионных меньше, чем у Motiki, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях из San Jose.
Вариант 7.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 100, если они не находятся в Лондоне
2. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 3 и 5
января) его номер, стоимость заказа, имя продавца и размер комиссионных,
полученных продавцом за этот заказ.
3. Напишите запрос, который выбрал бы самый ранний заказ для каждого
продавца с сортировкой по убыванию имен продавцов.
4. Выведите имена и города всех заказчиков с рейтингом, отличным от Hoffmana,
используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя
представление, выведите данные о покупателях с рейтингом 100.
Вариант 8.
1. Напишите запрос к таблице Продавцов, чей вывод может включить всех
продавцов, причем с комиссионными не меньше 0.13, если они не находятся в
Лондоне
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и
имя заказчика. Данные вывести для заказчиков, размещенных в San Jose и в
Barcelona.
3. Напишите запрос, который выбрал бы самый поздний заказ каждого продавца с
сортировкой по убыванию дат заказов.
4. Напишите запрос, который выводит имена и города всех продавцов, у которых
процент комиссионных больше, чем у Motiki, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах с комиссионными больше 0,11.
Вариант 9.
1. Напишите запрос к таблице Продавцов, чей вывод может включить всех
продавцов, причем с комиссионными меньше 0.13, если они не находятся в San
Jose
2. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и
имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и НьюЙорке.
3. Напишите запрос, который выбрал бы самый ранний заказ каждого заказчика с
сортировкой по возрастанию дат заказов.
4. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Hoffmana,
используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах с заказами до 5 числа. (здесь
лучше до 4 числа, иначе выводятся все продавцы из представления)

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

Тема 1: Создание таблиц. Последовательности

(в лекциях см. п.3.3.1, 3.3.2).

Тема 2: Вставка, изменение и удаление данных из таблиц

(в лекциях см. п.3.1.2). Транзакции (в лекциях см. п.3.2).

Тема 3: Блоки PL/SQL. Типы данных и операторы языка PL/SQL.

(в лекциях см. п.5, 6, 7).

Тема 4: Вывод данных (в лекциях см. п. 10.1). Обработка исключительных

ситуаций (в лекциях см. п. 5.4).

Тема 5: Работа с базами данных в программах PL/SQL. Курсоры

(в лекциях см. п. 8).


Задание:

Вариант 0.

1. Создать таблицу для хранения данных о спортивных соревнованиях. Таблица

должна содержать поле для уникального номера, названия соревнования,

количества команд участников.

2. Напишите команды для вставки в таблицу 8-10 записей о соревнованиях.

Создайте последовательность и используйте ее в командах вставки для

заполнения поля уникального номера.

3. Напишите команду удаления строк с данными о соревнованиях с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных даты заказов для продавцов, не работающих в

Лондоне, и выводит результат. Добавить в программу раздел Exception с

обработчиком OTHERS, в котором определяется вид ошибки и выводится

сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена покупателей, чей рейтинг меньше 200, и

выводит результат.

Вариант 1.

1. Создать таблицу для хранения данных о спортсменах. Таблица должна

содержать поле для уникального номера, имени спортсмена, его рейтинга.

2. Напишите команды для вставки в таблицу 8-10 записей о спортсменах.

Создайте последовательность и используйте ее в командах вставки для

заполнения поля уникального номера.

3. Напишите команду удаления строк с данными о спортсменах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных номера заказов для продавцов, работающих в

Лондоне, и выводит результат. Добавить в программу раздел Exception с

обработчиком OTHERS, в котором определяется вид ошибки и выводится

сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена продавцов, работающих не в Лондоне, и

выводит результат.

Вариант 2.

1. Создать таблицу для хранения данных о высших учебных заведениях. Таблица

должна содержать поле для уникального номера ВУЗа, названия, количества

факультетов. Создать первичный ключ для уникального номера.

2. Напишите команды для вставки в таблицу 8-10 записей о ВУЗах. Создайте

последовательность и используйте ее в командах вставки для заполнения поля

первичного ключа.

3. Напишите команду удаления строк с данными о ВУЗах с нечетными номерами.

Напишите команду отмены транзакции, а затем повторите команду удаления, но

для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных суммы всех заказов после 03 января, и выводит

результат. Добавить в программу раздел Exception с обработчиком OTHERS, в

котором определяется вид ошибки и выводится сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена покупателей из Рима и выводит результат.

Вариант 3.

1. Создать таблицу для хранения данных о дисциплинах, изучаемых в высших

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

названия дисциплины, количества лекционных часов.

2. Напишите команды для вставки в таблицу 8-10 записей о дисциплинах.

Создайте последовательность и используйте ее в командах вставки для

заполнения поля уникального номера.

3. Напишите команду удаления строк с данными о дисциплинах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных даты заказов до 05 января, и выводит результат.

Добавить в программу раздел Exception с обработчиком OTHERS, в котором

определяется вид ошибки и выводится сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена продавцов из Лондона и выводит результат.

Вариант 4.

1. Создать таблицу для хранения данных о городах России. Таблица должна

содержать поле для уникального номера, названия города, численности

населения.

2. Напишите команды для вставки в таблицу 8-10 записей о городах. Создайте

последовательность и используйте ее в командах вставки для заполнения поля

уникального номера.

3. Напишите команду удаления строк с данными о городах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных номера заказов после 04 января, и выводит

результат. Добавить в программу раздел Exception с обработчиком OTHERS, в

котором определяется вид ошибки и выводится сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных названия городов тех продавцов, чьи комиссионные

больше 0.11, и выводит результат.

Вариант 5.

1. Создать таблицу для хранения данных о странах Европы. Таблица должна

содержать поле для уникального номера, названия страны, численности

населения.

2. Напишите команды для вставки в таблицу 8-10 записей о странах. Создайте

последовательность и используйте ее в командах вставки для заполнения поля

уникального номера.

3. Напишите команду удаления строк с данными о странах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных имя покупателя, работающего в Риме, сумму всех

его заказов и выводит результат. Добавить в программу раздел Exception с

обработчиком OTHERS, в котором определяется вид ошибки и выводится

сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

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

200, и выводит результат.

Вариант 6.

1. Создать таблицу для хранения данных о марках автомобилей. Таблица должна

содержать поле для уникального номера, названия автомобиля, стоимости.

2. Напишите команды для вставки в таблицу 8-10 записей об автомобилях.

Создайте последовательность и используйте ее в командах вставки для

заполнения поля уникального номера.

3. Напишите команду удаления строк с данными об автомобилях с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных имена продавцов, чьи комиссионные меньше 0.13, и

выводит результат. Добавить в программу раздел Exception с обработчиком

OTHERS, в котором определяется вид ошибки и выводится сообщения об этой

ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена покупателей, чей рейтинг больше 100, и

выводит результат.

Вариант 7.

1. Создать таблицу для хранения данных о кинофильмах. Таблица должна

содержать поле для уникального номера, названия кинофильма, размера

бюджета.

2. Напишите команды для вставки в таблицу 8-10 записей о кинофильмах.

Создайте последовательность и используйте ее в командах вставки для

заполнения поля уникального номера.

3. Напишите команду удаления строк с данными о кинофильмах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных имя продавца, работающего в Лондоне,

максимальную дату его заказов и выводит результат. Добавить в программу

раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и

выводится сообщения об этой ошибке

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных имена продавцов, чьи комиссионные меньше 0.14, и

выводит результат.

Вариант 8.

1. Создать таблицу для хранения данных о книгах. Таблица должна содержать

поле для уникального номера, названия книги, количества экземпляров тиража.

2. Напишите команды для вставки в таблицу 8-10 записей о книгах. Создайте

последовательность и используйте ее в командах вставки для заполнения поля

уникального номера.

3. Напишите команду удаления строк с данными о книгах с нечетными номерами.

Напишите команду отмены транзакции, а затем повторите команду удаления, но

для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных имена продавцов, чьи комиссионные меньше 0.15, и

выводит результат. Добавить в программу раздел Exception с обработчиком

OTHERS, в котором определяется вид ошибки и выводится сообщения об этой

ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных суммы заказов, сделанных после 04 января, и выводит

результат.

Вариант 9.

1. Создать таблицу для хранения данных о курортах. Таблица должна содержать

поле для уникального номера, названия курорта, количества туров в год.

2. Напишите команды для вставки в таблицу 8-10 записей о курортах. Создайте

последовательность и используйте ее в командах вставки для заполнения поля

уникального номера.

3. Напишите команду удаления строк с данными о курортах с нечетными

номерами. Напишите команду отмены транзакции, а затем повторите команду

удаления, но для четных номеров. Подтвердите транзакцию.

4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO

…, считывает из базы данных имя продавца, работающего в Лондоне, количество

его заказов и выводит результат. Добавить в программу раздел Exception с

обработчиком OTHERS, в котором определяется вид ошибки и выводится

сообщения об этой ошибке.

5. Составить и выполнить программу PL/SQL, которая, используя курсор,

считывает из базы данных номера заказов, сделанных до 04 января, и выводит

результат.


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

Тема 1: Хранимые процедуры и функции PL/SQL

(в лекциях см. п. 9.1, 9.2).

Тема 2: Пакеты PL/SQL

(в лекциях см. п. 9.3).

Тема 3: Триггеры PL/SQL

(в лекциях см. п. 9.6).


Задание:
Вариант 0.
1. Создать пакет, в который поместить процедуру, которая выводит заглавными
буквами строку, заданную в качестве аргумента. Вызвать процедуру пакета из
безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
первых N (передать в параметре) по алфавиту продавцах и их заказах. Вызовите
процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет количества участников в
таблице спортивных соревнований из задания 1 лабораторной работы 2.
Количество участников должно удвоиться в тех строках, в которых оно меньше
среднего по таблице, кроме соревнования, указанного в параметре.
4. Создать триггер PL/SQL, который запрещает удаление заказов продавца в
последний день месяца.
5. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции
вставки, изменения и удаления данных в таблице заказов. При регистрации
необходимо сохранять вид операции, номер и сумму заказа. Вывести содержимое
журнала регистрации.
Вариант 1.
1. Создать пакет, в который поместить функцию, которая возвращает куб числа,
заданного в качестве аргумента. Вызвать процедуру пакета из безымянного
блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
последних N (передать в параметре) заказах, отсортированных по возрастанию
стоимостей, и именах их продавцов. Вызовите процедуру пакета из безымянного
блока.
3. Включите в пакет процедуру, которая изменяет рейтинги в таблице
спортсменов из задания 1 лабораторной работы 2. Рейтинг должен удвоиться в
тех строках, в которых он выше среднего по таблице, кроме спортсмена,
указанного в параметре.
4. Создать триггер PL/SQL, который регистрирует изменение комиссионных
продавцов с указанием только имени таблицы и времени изменения.
5. Создать триггер PL/SQL, который запускается при удалении покупателей.
Триггер должен запрещать удаление, если покупатель имеет более одного заказа.
Вывести содержимое журнала регистрации.
Вариант 2.
1. Создать пакет, в который поместить процедуру, которая принимает в
параметрах Ваши фамилию, имя и отчество, а выводит инициалы и фамилию.
Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
первых N (передать в параметре) по возрастанию стоимостей заказах и именах их
покупателей. Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет количества факультетов в
таблице высших учебных заведений из задания 1 лабораторной работы 2.
Количество факультетов должно удвоиться для учебного заведения с самым
длинным названием, кроме заведения, указанного в параметре.
4. Создать триггер PL/SQL, который разрешает изменение суммы заказа только в
рабочее время.
5. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции
вставки и изменения заказов. Регистрация выполняется, если стоимость заказа
превышает $100, и включает имя пользователя, вид операции и стоимость заказа.
Вывести содержимое журнала регистрации.
Вариант 3.
1. Создать пакет, в который поместить функцию, которая возвращает
минимальное из двух чисел, заданных в качестве аргументов. Вызвать процедуру
пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
первых двух покупателях, имеющих заказы до даты, переданной в параметре.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет количества лекционных часов в
таблице дисциплин, изучаемых в высших учебных заведениях, из задания 1
лабораторной работы 2. Количество часов должно удвоиться для дисциплины с
самым коротким названием, кроме дисциплины, указанной в параметре.
4. Создать триггер PL/SQL, который запрещает изменение рейтинга для
покупателей, если изменение происходит после 25-го числа.
5. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции
вставки, изменения и удаления данных в таблице продавцов. При регистрации
необходимо сохранять вид операции и время ее выполнения. Вывести
содержимое журнала регистрации.
Вариант 4.
1. Создать пакет, в который поместить процедуру, которая выводит произведение
двух чисел, заданных в качестве аргументов. Вызвать процедуру пакета из
безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
первых трех заказах, чьи суммы выше значения, переданного в параметре.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет численность населения в
таблице городов России из задания 1 лабораторной работы 2. Численность
населения должна увеличиться на 5 % для городов, в которых население меньше,
чем у города, указанного в параметре.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице
изменение рейтинга для покупателей. При регистрации необходимо сохранять в
журнале старое и новое значения рейтинга и время изменения.
5. Создать триггер PL/SQL, который регистрирует в журнальных таблицах
операции изменения и удаления данных в таблице заказов. Каждый вид операции
должен регистрироваться в своей журнальной таблице. Вывести содержимое
журнала регистрации.
Вариант 5.
1. Создать пакет, в который поместить процедуру, которая выводит строчными
(маленькими) буквами строку, заданную в качестве аргумента. Вызвать процедуру
пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
первых двух продавцах, имеющих заказы после даты, переданной в параметре.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет численность населения в
таблице стран Европы из задания 1 лабораторной работы 2. Численность
населения должна увеличиться на 10 % для стран, в которых население больше,
чем у страны, указанной в параметре.
4. Создать триггер PL/SQL, который разрешает удаление покупателей только из
города Лондон.
5. Создать триггер PL/SQL, который регистрирует в журнальных таблицах
операции вставки, изменения и удаления данных в таблице продавцов. Каждый
вид операции необходимо регистрировать в своей таблице. При регистрации
необходимо сохранять пользователя и время ее выполнения. Вывести
содержимое журнала регистрации.
Вариант 6.
1. Создать пакет, в который поместить функцию, которая принимает в параметрах
Ваши фамилию, имя и отчество, а возвращает фамилию и инициалы. Вызвать
процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
трех самых поздних заказах, выполненных до даты, переданной в параметре.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет стоимости в таблице марок
автомобилей из задания 1 лабораторной работы 2. Стоимость должна
увеличиться на 10 % для автомобилей, у которых названия длиннее, чем у
автомобиля, указанного в параметре.
4. Создать триггер PL/SQL, который запрещает удаление продавцов, если
количество выполненных им заказов больше трех.
5. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции
вставки, изменения и удаление заказов. Регистрация выполняется только в
нерабочее время и включает имя пользователя, вид операции и стоимость заказа.
Вывести содержимое журнала регистрации.
Вариант 7.
1. Создать пакет, в который поместить функцию, которая возвращает суммарную
длину двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из
безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
покупателях из последних N (передать в параметре) по алфавиту городов и их
заказах. Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет бюджеты в таблице
кинофильмов из задания 1 лабораторной работы 2. Размеры бюджетов должны
увеличиться на 5 % для кинофильмов, у которых названия короче, чем у фильма,
указанного в параметре.
4. Создать триггер PL/SQL, который регистрирует изменение городов для
покупателей с сохранением в журнале имени покупателя, прежнего и нового
названия города.
5. Создать триггер PL/SQL, который запускается при вставке, изменении и
удалении заказов. Триггер должен регистрировать тип и время операции и
запрещать удаление, если количество заказов в таблице не превышает 10.
Вывести содержимое журнала регистрации.
Вариант 8.
1. Создать пакет, в который поместить процедуру, которая выводит самую
короткую из двух строк, заданных в качестве аргументов. Вызвать процедуру
пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
последних N (передать в параметре) по алфавиту покупателях и их заказах.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет тиражи в таблице книг из
задания 1 лабораторной работы 2. Тиражи должны удваиваться для книг, у
которых тиражи меньше, чем у книги, указанной в параметре.
4. Создать триггер PL/SQL, который регистрирует изменение комиссионных,
только если новое значение больше прежнего.
5. Создать триггер PL/SQL, который запускается при вставке, изменении и
удалении заказов. Триггер должен регистрировать тип и дату операции и
запрещать удаление, если стоимость заказа превышает $5000. Вывести
содержимое журнала регистрации.
Вариант 9.
1. Создать пакет, в который поместить функцию, которая возвращает самую
длинную из двух строк, заданных в качестве аргументов. Вызвать процедуру
пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о
продавцах из первых N (передать в параметре) по алфавиту городов и их заказах.
Вызовите процедуру пакета из безымянного блока.
3. Включите в пакет процедуру, которая изменяет годовые количества туров в
таблице курортов из задания 1 лабораторной работы 2. Количества туров должны
удваиваться для курортов, у которых туров меньше, чем у курорта, указанного в
параметре.
4. Создать триггер PL/SQL, который разрешает удаление покупателей с
количеством заказов меньше трех.
5. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции
вставки, изменения и удаления данных в таблице заказов, а также округляет
стоимость заказа до целого числа при вставке и изменении. Вывести содержимое
журнала регистрации.
Обсудим вашу работу?
При заказе дарим онлайн-тест!
Заполните форму
и мы свяжемся с вами за 2 часа