Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лёшка / Маркин Тест 3 / SQL / Laboratornyi_praktikum_2.doc
Скачиваний:
22
Добавлен:
15.04.2015
Размер:
95.23 Кб
Скачать

Лабораторная работа № 6. Программирование хранимых процедур

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

Лабораторное задание. Изучить теоретическую часть, изложенную в разд. 6.1 и 6.2 учебном пособии. Восстановить учебную БД из резервной копии. Разработать и выполнить хранимые процедуры согласно заданиям. Защитить лабораторную работу.

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

1. Убедившись, что сервер СУБД Firebird загружен, загрузить утилиту IBExpert.

2. Восстановить из резервной копии учебную БД, созданную в лабораторной работе № 1. При необходимости создать новую БД можно с помощью скрипта, находящегося в приложении B.

3. Подключиться к учебной БД.

4. Выполнить SQL-сценарий, приведенный в п. 6.2.3 настоящего учебного пособия, добавляющий в учебную базу данных хранимые процедуры Factorial и FactorialSet.

5. Изменить (используя оператор ALTER PROCEDURE) процедуру FactorialSet таким образом, чтобы при ее вызове не требовалось указывать входные параметры, а вычисление факториала чисел от 1 до 170 и занесение вычисленных значений в таблицу Ftable происходили автоматически. При этом генерация очередного значения для вычисления факториала должна осуществляться с помощью генератора. Перед каждым запуском на выполнение процедуры FactorialSet необходимо устанавливать начальное значение генератора равным нулю.

6. Разработать процедуру выбора и выполняемую процедуру в соответствии с вариантом индивидуального задания.

7. Составить отчет. В отчете представить тексты хранимых процедур, созданных при выполнении общего и индивидуального заданий.

8. Защитить лабораторную работу, положительно ответив под контролем информационной системы [29] на заданное число тестовых вопросов по теме настоящей лабораторной работы.

Варианты индивидуальных заданий

Вариант 1

1. Создать процедуру выбора, которая возвращает для всех платежей код платежа, дату, сумму и ФИО абонента, совершившего платеж.

2. Создать выполняемую процедуру, которая для заданного месяца и года производит начисление по выполненным в этом месяце ремонтным заявкам. Суммы начислений принять равными 100 руб. для неисправностей, связанных с АГВ или печной горелкой, 75 руб. – с водогрейной колонкой, 50 руб. – с газовой плитой и 40 – со счетчиком.

Вариант 2

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

2. Создать выполняемую ХП, которая для заданного абонента изменяет значения начислений за нужные месяц и год на максимальное значение начисления для услуги из изменяемой записи. Входные параметры: ФИО абонента, месяц и год начисления.

Вариант 3

1.Создать процедуру выбора, которая возвращает ФИО абонента и значения его начислений, сопровождая вывод информацией о телефоне абонента и месяце, за который было начислено.

2. Добавить в справочник услуг услугу с наименованием Пени. Создать выполняемую процедуру, которая будет анализировать количество месяцев задолженности у каждого абонента по оплате услуги Водоснабжение по следующему алгоритму. Если у абонента за определенный месяц есть начисление, но нет оплаты, то это означает, что у него имеется 1 месяц задолженности. Выполнить начисление (в процедуре) каждому абоненту по услуге Пени, если реальное число месяцев задолженности превышает количество месяцев задолженности, задаваемое во входном параметре. Начисление рассчитывать как 0,5 % от суммы задолженности.

Вариант 4

1. Создать процедуру выбора, возвращающую значения и даты платежей, сделанных абонентом, ФИО которого должно передаваться через входной параметр.

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

Вариант 5

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

2. Создать таблицу, позволяющую сохранять в одной строке следующую информацию: лицевой счет, ФИО, полная «красивая» строка адресных данных, текущий баланс лицевого счета, дата последней оплаты, общее число выполненных ремонтных заявок. Создать выполняемую процедуру по заполнению добавленной таблицы.

Вариант 6

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

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

Вариант 7

1.Создать таблицу, позволяющую сохранять следующую информацию: код исполнителя ремонтной заявки (первичный ключ таблицы), ФИО исполнителя и количество выполненных им заявок.

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

Вариант 8

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

2. Создать таблицу, позволяющую хранить следующую информацию: номер лицевого счета абонента, ФИО абонента, дата первого начисления (последний день месяца, за который было выполнено первое начисление абоненту) и наименование соответствующей услуги. Создать выполняемую процедуру, заполняющую данную таблицу данными по всем абонентам, у которых есть начисления.

Вариант 9

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

2.Создать таблицу, позволяющую хранить следующую информацию: номер лицевого счета абонента, ФИО абонента, дата первой оплаты. Создать выполняемую процедуру, заполняющую данную таблицу данными по всем абонентам, у которых есть оплаты.

Вариант 10

1.Создать таблицу, позволяющую сохранять следующую информацию: код исполнителя ремонтной заявки (первичный ключ таблицы), ФИО исполнителя и количество выполненных им заявок.

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

Соседние файлы в папке SQL