DELIMITER $$
--数据库名称USE`zycrm`$$
--删除旧的存储过程DROPPROCEDUREIFEXISTS`u_head`$$
--定义新的存储过程CREATEPROCEDURE`u_head`(IN param_num INTEGER)BEGIN-- 该变量用于标识是否还有数据需遍历DECLARE flag INTDEFAULT0;-- 创建一个变量用来存储遍历过程中的值DECLARE id BIGINT(40);-- 查询出需要遍历的数据集合DECLARE idList CURSORFOR(SELECT id FROM ws_shop WHERE id < param_num );-- 查询是否有下一个数据,没有将标识设为1,相当于hasNextDECLARECONTINUEHANDLERFORNOT FOUND SET flag =1;-- 打开游标OPEN idList;-- 取值设置到临时变量中FETCH idList INTO id;-- 遍历未结束就一直执行WHILE flag !=1DO-- targetSQL //你想要执行的目标功能,这里可以写多个SQL-- 注意-- 这里有一个坑,目标语句引用临时变量,实测发现不需要加@符号,但是搜索到的结果都是例如:@id ,这样来使用,实测发现无法取到数据-- 注意INSERTINTO ws_shop SET shopName = id;-- 定要记得把游标向后移一位,这个坑我替各位踩过了,不需要再踩了FETCH idList INTO id;ENDWHILE;CLOSE idList;END$$
DELIMITER;