Ошибка процедуры создания дня недели ()

Я должен выполнить процедуру только по понедельникам; поэтому я сначала делаю тест в WEEKDAY(), но есть синтаксическая ошибка, и я не могу выяснить, что не так?

CREATE DEFINER=`root`@`localhost` PROCEDURE `fm_Upd_Histo_Inv`()
BEGIN
-- Test if it is Monday 
    CASE WEEKDAY(curdate()) = 0 then
        insert into db1w_histo_inventory (year, week, store, total, to_do)
            select year(curdate()),
                WEEKOFYEAR(curdate()),
                S.store, 
                count(S.INVDATE) as TotalToDo,
                sum(datediff(curdate(), S.INVDATE) > '365') as 'TO_DO'
            from mrqr_stock S
            left join mrqr_organisms O
                on O.ORGANISM = S.STORE
            where (O.ORGANISM like '01%'
                        or O.ORGANISM like 'VV%'
                        or O.ORGANISM like 'IK%')
            group by S.STORE
    end;
END

1 ответ

CASE обычно используется в таких выражениях, как выбор, вставка, обновление, удаление. Он не используется для управления потоком. использование IF вместо. И установить другой разделитель.

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `fm_Upd_Histo_Inv`()
BEGIN
-- Test if it is Monday 
    IF WEEKDAY(curdate()) = 0 then
        insert into db1w_histo_inventory (year, week, store, total, to_do)
            select year(curdate()),
                WEEKOFYEAR(curdate()),
                S.store, 
                count(S.INVDATE) as TotalToDo,
                sum(datediff(curdate(), S.INVDATE) > '365') as 'TO_DO'
            from mrqr_stock S
            left join mrqr_organisms O
                on O.ORGANISM = S.STORE
            where (O.ORGANISM like '01%'
                        or O.ORGANISM like 'VV%'
                        or O.ORGANISM like 'IK%')
            group by S.STORE
    end if;
END $$
DELIMITER ;
Другие вопросы по тегам