2017-09-05 14 views
0

월요일에 프로 시저 만 실행하면됩니다. 그래서 나는 WEEKDAY()에 대한 테스트를 먼저 수행하지만 구문 오류가있어 무엇이 잘못되었는지를 알 수 없습니까?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 
+0

어떤 DBMS를 사용하십니까? 관련 태그 추가 – Jens

답변

0

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 ;