A cursor is a tool used in stored procedures to process a recordset.
# Basic Parts: # Containers for cursor values: DECLARE csr_id INT; DECLARE csr_month_key VARCHAR(10); DECLARE csr_month DATE; DECLARE csr_done INT DEFAULT 0; # Must go before cursor # The Cursor: DECLARE csr_keys CURSOR FOR SELECT id, month_key, the_month FROM key_manager ORDER BY MONTH(the_month); # Cursor to find the end of the recordset: DECLARE CONTINUE HANDLER FOR NOT FOUND SET csr_done=1; # Using cursor: # Open cursor for reading: OPEN csr_keys; get_keys:LOOP # Stepping through cursor and assigning values into variables: FETCH csr_keys INTO csr_id, csr_month_key, csr_month; # Do something (here will do an update): IF MONTH(NOW()) > MONTH(csr_month) THEN UPDATE key_manager SET the_month = CONCAT(YEAR(NOW), '-', MONTH(csr_month), '-', DAY(csr_day)); END IF; # Use this to break out of recordset when at last row: IF csr_done=1 THEN LEAVE get_keys; END IF; END LOOP get_keys;