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

5сем / files / filling_total

.sql
Скачиваний:
3
Добавлен:
27.08.2024
Размер:
2 Кб
Скачать
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