Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5сем / files / filling_total

.sql
Скачиваний:
1
Добавлен:
27.08.2024
Размер:
1.78 Кб
Скачать
DROP PROCEDURE IF EXISTS filling_total;
DELIMITER //
CREATE PROCEDURE filling_total(full_fill varchar(1), id1 int)

BEGIN
IF full_fill = 'y' THEN
SET @cikl = (SELECT MAX(id_appeal) FROM my_library.appeals);
SET @summa = 0;
WHILE @cikl > 0 DO
SET @summa = (SELECT (datediff(my_library.appeals.return_day, my_library.appeals.issue_date)
* my_library.books.coast_per_day + my_library.books.deposit
- datediff(my_library.appeals.return_day_expected, my_library.appeals.issue_date)*my_library.readers.discount_reader/100)
FROM my_library.appeals, my_library.books, my_library.readers
WHERE my_library.appeals.id_appeal = @cikl
and my_library.appeals.id_book = my_library.books.id_book
and my_library.appeals.id_reader = my_library.readers.id_reader);
UPDATE my_library.appeals
SET total = @summa
WHERE my_library.appeals.id_appeal = @cikl;
SET @cikl = @cikl - 1;
END WHILE;
END IF;
IF full_fill = 'n' THEN
SET @summa = (SELECT (datediff(my_library.appeals.return_day, my_library.appeals.issue_date)
* my_library.books.coast_per_day + my_library.books.deposit
- datediff(my_library.appeals.return_day_expected, my_library.appeals.issue_date)*my_library.readers.discount_reader/100)
FROM my_library.appeals, my_library.books, my_library.readers
WHERE my_library.appeals.id_appeal = id1
and my_library.appeals.id_book = my_library.books.id_book
and my_library.appeals.id_reader = my_library.readers.id_reader);
UPDATE my_library.appeals
SET total = @summa
WHERE my_library.appeals.id_appeal = id1;
END IF;
SELECT * FROM my_library.appeals;
END
//
CALL filling_total('y', 12);
Соседние файлы в папке files