Ruslan Polupan
Ruslan Polupan14 декабря 2018 г. 18: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 хостинг.

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

Комментарии

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

Qt - Тест 001. Сигналы и слоты

  • Результат:84баллов,
  • Очки рейтинга4
Ua

Qt - Тест 001. Сигналы и слоты

  • Результат:42баллов,
  • Очки рейтинга-8
ОК

Qt - Тест 001. Сигналы и слоты

  • Результат:47баллов,
  • Очки рейтинга-6
Последние комментарии
ИМ
Игорь Максимов22 ноября 2024 г. 21:51
Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 октября 2024 г. 23:37
Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 октября 2024 г. 17:19
Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5 октября 2024 г. 16:51
Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55 июля 2024 г. 20:02
QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Сейчас обсуждают на форуме
f
firstlunoxod15 февраля 2025 г. 13:46
Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
Дмитрий
Дмитрий3 февраля 2025 г. 16:24
Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
NW
Nayo Wai30 января 2025 г. 19:22
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
n
nkly3 января 2025 г. 12:52
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
M
Marsel17 августа 2023 г. 0:26
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

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