Ruslan Polupan
Ruslan Polupan14 декабря 2018 г. 7:48

Хранимые процедуры MySQL

Добрый день

Я создаю приложение Duty Schedule для нашей горячей линии технической поддержки, используя Qt + MySQL.
На каждый месяц необходимо ежемесячно заполнять календарную таблицу, содержащую дату и знак выходного или рабочего дня.


Структура таблицы следующая:

CREATE TABLE `calendar` (
  `calendarID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `monthID` int(10) unsigned NOT NULL,
  `date` date NOT NULL,
  `iswork` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY (`calendarID`),
  KEY `month` (`monthID`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4

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

Вызов

call filling_the_calendar(2,2016);
CREATE DEFINER=`root`@`localhost` PROCEDURE `filling_the_calendar`(IN cur_month INT, cur_year INT)
BEGIN
    -- We declare variables the current day, the first day of the month, the first day of the next month.
    DECLARE cur_day, first_day, next_month DATE;
    --Month ID, working day or not
    DECLARE monthID, iswork INT;
    /*Variable initialization*/
    SET first_day = CONCAT(cur_year,'-',cur_month,'-01');
    SET monthID = cur_year * 100 + cur_month;
    SET next_month = DATE_ADD(first_day, INTERVAL 1 MONTH);
    SET cur_day = first_day;
    /*Going through all the days of the month */
    WHILE cur_day < next_month DO
    /*If the day of the week is Saturday or Sunday they are not working*/
        IF  (WEEKDAY(cur_day) = 6 OR WEEKDAY(cur_day) = 5) THEN 
            SET iswork = 0;
        ELSE 
            SET iswork = 1;
        END IF;
        /*add record to table*/
        INSERT INTO calendar (`monthID`, `date`, `iswork`)
                    VALUES (monthID, cur_day, iswork);
     /*Increase the day*/
        SET cur_day = DATE_ADD(cur_day, INTERVAL 1 DAY);
    END WHILE;
END
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50баллов,
  • Очки рейтинга-4
m
  • molni99
  • 26 октября 2024 г. 8:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80баллов,
  • Очки рейтинга4
m
  • molni99
  • 26 октября 2024 г. 8:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
i
innorwall14 ноября 2024 г. 19:42
Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
i
innorwall14 ноября 2024 г. 17:09
Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
i
innorwall14 ноября 2024 г. 12:05
EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
i
innorwall14 ноября 2024 г. 12:00
PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты) priligy 30mg Am J Obstet Gynecol 171 1488 505
i
innorwall14 ноября 2024 г. 10:54
Django - Урок 003. Модель, шаблон и представление в Django Hair follicles are believed to produce approximately 20 individual hair shafts over the life of the follicle as the follicle progresses through cycles of hair production, shedding ejection, invo…
Сейчас обсуждают на форуме
i
innorwall14 ноября 2024 г. 11:39
добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
i
innorwall11 ноября 2024 г. 18:55
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
9
9Anonim25 октября 2024 г. 16:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов3 октября 2024 г. 11:05
Реализация навигации по разделам Спасибо Евгений!

Следите за нами в социальных сетях