Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Сибирский государственный аэрокосмический университет
имени академика М.Ф. Решетнева»
(СибГАУ)
Институт информатики и телекоммуникаций
Кафедра безопасности информационных технологий
Лабораторная работа №7
«Хранимые процедуры»
По дисциплине
«Безопасность систем баз данных»
Выполнили ст. группы КБ-51:
Булгаков А.Ю.
Бессмертный Д.О.
Проверил: преподаватель Жуков В. Г.
Красноярск 2009
Создадим для разработанной базы данных по одному экземпляру выполняемой хранимой процедуры и хранимой процедуры выбора и проверим корректность их выполнения в «Отладчике процедур».
Процедура принимает в качестве параметров номер платежа и коэффициент, вычисляет размер платежа с учетом коэффициента и заменяет им старый в таблице PAYMENT, а в таблице SALES создает новую запись, куда помещает значение коэффициента и разницу платежей:
CREATE PROCEDURE CHANGE_PAY ( SALE_ INTEGER, ID_ INTEGER)
AS
DECLARE VARIABLE DIFFERENT INTEGER;
DECLARE VARIABLE NEWPAY INTEGER;
DECLARE VARIABLE OLDPAY INTEGER;
BEGIN
SELECT SUMMA from "PAYMENT" where PAYMENT.ID = :id_ INTO oldpay ;
Newpay=oldpay-oldpay*Sale_/100;
UPDATE PAYMENT SET SUMMA = :Newpay WHERE id=:id_;
different=oldpay-newpay;
INSERT INTO SALES (id, sale, different)
VALUES (:id_,:sale_,:different);
suspend;
END
При необходимости корректность выполнения процедуры можно проверить в отладчике. Проверим работу.
CREATE PROCEDURE CHOOSE (SM INTEGER)
RETURNS (KIND_ VARCHAR(50))
AS
DECLARE VARIABLE KIND_I VARCHAR(50);
DECLARE VARIABLE ID_ INTEGER;
begin
FOR SELECT KIND_OF_PAYMENT, ID
FROM "PAYMENT"
WHERE SUMMA=:SM
INTO kind_i,id_
DO
BEGIN
SELECT KIND_OF_PAYMENT FROM "PAYMENT"
WHERE ID=:id_
INTO kind_;
suspend;
end
end
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.