drop procedure if exists normalWorkOver;
delimiter $
create procedure normalWorkOver(
in segNum int(11),
in xxsetting int(11),
in xxbegin varchar(20),
in dsegNum int(11),
in ddate VARCHAR(20),
in dworkPeriod1StartType int(11),
in isDelayOver int(11),
in yshour int(11),
in ysisHour int(11),
in dworkPeriod1Start VARCHAR(20))
begin
declare tomdate VARCHAR(20);
declare toddate VARCHAR(20);
declare workOverAccess VARCHAR(20);
declare workOverTime int(11);
/* in out out out */
call segNum(@segNum,@endTime,@workOvertimeStart,@workOvertimeUnit);
set toddate = @endTime;
set workOverAccess = (select MAX(time) from `r_record_access` where time > toddate and time < tomdate);
IF isDelayOver = 0 AND workOverAccess > toddate THEN
set workOverTime = TIMESTAMPDIFF(MINUTE,toddate,workOverAccess);
ELSEIF isDelayOver = 1 AND ysisHour=1 THEN /
set workOverTime = (case
when TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) > yshour
then TIMESTAMPDIFF(MINUTE,toddate,workOverAccess)
else 0 END);
ELSEIF isDelayOver = 1 AND ysisHour=0 THEN
set workOverTime = (select case
when TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) > yshour
then (TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) - yshour)
else 0 END);
ELSE set workOverTime = 0;
END IF;
end;
$
delimiter ;
delimiter $
create procedure normalWorkOver(
in segNum int(11),
in xxsetting int(11),
in xxbegin varchar(20),
in dsegNum int(11),
in ddate VARCHAR(20),
in dworkPeriod1StartType int(11),
in isDelayOver int(11),
in yshour int(11),
in ysisHour int(11),
in dworkPeriod1Start VARCHAR(20))
begin
declare tomdate VARCHAR(20);
declare toddate VARCHAR(20);
declare workOverAccess VARCHAR(20);
declare workOverTime int(11);
/* in out out out */
call segNum(@segNum,@endTime,@workOvertimeStart,@workOvertimeUnit);
set toddate = @endTime;
set workOverAccess = (select MAX(time) from `r_record_access` where time > toddate and time < tomdate);
IF isDelayOver = 0 AND workOverAccess > toddate THEN
set workOverTime = TIMESTAMPDIFF(MINUTE,toddate,workOverAccess);
ELSEIF isDelayOver = 1 AND ysisHour=1 THEN /
set workOverTime = (case
when TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) > yshour
then TIMESTAMPDIFF(MINUTE,toddate,workOverAccess)
else 0 END);
ELSEIF isDelayOver = 1 AND ysisHour=0 THEN
set workOverTime = (select case
when TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) > yshour
then (TIMESTAMPDIFF(MINUTE,toddate,workOverAccess) - yshour)
else 0 END);
ELSE set workOverTime = 0;
END IF;
end;
$
delimiter ;
call normalWorkOver(1,1,"08:00",1,"2017-04-03",0,0,0,0,"08:00");
end后面要加分号