CREATE PROCEDURE my_proc()
BEGIN
-- 需要定义接收游标数据的变量
DECLARE sname VARCHAR(100);
DECLARE cattype VARCHAR(100);
DECLARE startdt VARCHAR(100);
DECLARE frank VARCHAR(100);
-- 遍历数据结束标志①
DECLARE done tinyint DEFAULT FALSE;
-- 游标②
DECLARE cur CURSOR FOR SELECT t.s_name, t.cat_type, t.start_date, t.frank FROM test t WHERE t.cat_type = 'XXX;
-- 将结束标志绑定到游标③
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCH cur INTO sname, cattype, startdt, frank;
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
UPDATE test u SET u.`START_DATE` = startdt, u.`FRANK` = frank
WHERE u.`S_NAME` = sname AND u.`START_DATE`<= startdt AND u.`SKILL_CAT_TYPE` = 'somexxx';
END LOOP;
-- 关闭游标
CLOSE cur;
END;