【问题标题】:Create procedure error weekday()创建程序错误 weekday()
【发布时间】:2018-02-13 08:59:15
【问题描述】:

我只需要在星期一执行该程序;所以我首先在 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

【问题讨论】:

  • 您使用哪个 DBMS。添加相关标签

标签: mysql stored-procedures procedure weekday


【解决方案1】:

CASE 通常用于 select、insert、update、delete 等语句中。它不用于控制流。请改用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 ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2014-10-06
    相关资源
    最近更新 更多