DROP PROCEDURE IF EXISTS sumstats; delimiter // CREATE PROCEDURE sumstats (IN startdate CHAR(20), IN enddate CHAR(20)) BEGIN DECLARE sum_bytes, userid_int, b INT; DECLARE sum_cost DOUBLE; DECLARE cur_1 CURSOR FOR SELECT sum(bytes), sum(cost), userid FROM stats WHERE storetime BETWEEN startdate AND enddate GROUP BY userid; DECLARE CONTINUE HANDLER FOR NOT FOUND SET b=1; OPEN cur_1; REPEAT FETCH cur_1 INTO sum_bytes, sum_cost, userid_int; IF userid_int IS NOT NULL THEN SELECT sum_bytes, sum_cost, userid_int; DELETE FROM stats_cache WHERE storetime = startdate AND userid = userid_int; INSERT INTO stats_cache ()VALUES (startdate, sum_bytes, userid_int, sum_cost); END IF; UNTIL b=1 END REPEAT; CLOSE cur_1; SELECT * from stats_cache; END;//