By passing the primary key of the basic table of holiday information and the start time of the holiday, adding or modifying the information of the holiday and the day of the holiday in the date information table, the function of configuring holiday information is achieved .
In the mysql stored procedure "2", loop is used to complete the function of configuring holidays, and now two other loop methods are used to complete this function.
One: use while.
DROP PROCEDURE IF EXISTS holiday; CREATE PROCEDURE holiday ( IN holiday INT, IN startTime VARCHAR (12) ) BEGIN DECLARE C INT DEFAULT 0; DECLARE dateOne VARCHAR (12); DECLARE offsetValue INT DEFAULT 1; DECLARE done INT DEFAULT FALSE; DECLARE with CURSOR FOR SELECT date FROM useful_date WHERE date >= startTime LIMIT C; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SELECT days INTO C FROM util_holiday WHERE id = holiday; UPDATE util_date SET holidayid = '0', dayoffset = '0' WHERE YEAR = SUBSTRING(startTime, 1, 4) AND holidayid = holiday; OPEN with; FETCH cu INTO dateOne; WHILE done = FALSE DO UPDATE util_date SET holidayid = holiday, dayoffset = offsetValue WHERE date = dateOne; SET offsetValue = offsetValue + 1; FETCH cu INTO dateOne; END WHILE; CLOSE cu; END
Two: use repeat.
DROP PROCEDURE IF EXISTS holiday; CREATE PROCEDURE holiday ( IN holiday INT, IN startTime VARCHAR (12) ) BEGIN DECLARE C INT DEFAULT 0; DECLARE dateOne VARCHAR (12); DECLARE offsetValue INT DEFAULT 1; DECLARE done INT DEFAULT FALSE; DECLARE with CURSOR FOR SELECT date FROM useful_date WHERE date >= startTime LIMIT C; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SELECT days INTO C FROM util_holiday WHERE id = holiday; UPDATE util_date SET holidayid = '0', dayoffset = '0' WHERE YEAR = SUBSTRING(startTime, 1, 4) AND holidayid = holiday; OPEN with; REPEAT FETCH cu INTO dateOne; IF done = FALSE THEN UPDATE util_date SET holidayid = holiday, dayoffset = offsetValue WHERE date = dateOne; SET offsetValue = offsetValue + 1; END IF; UNTIL done END REPEAT ; CLOSE cu; END
while and repeat in mysql are like while and do in java...while.