CREATE PROCEDURE `add_master_msg`()
begin
-- 定义变量
declare s int default 0;
declare v_zbrq datetime;
declare v_userid bigint;
declare v_createtime datetime;
-- 定义游标,并将sql结果集赋值到游标中,report为游标名
declare report cursor for select zbrq,userid,zbrq as createtime from t_system_zbb where name!='/' and userid is not null order by zbrq;
-- 声明当游标遍历完后将标志变量置为某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
-- 打开游标
open report ;
-- 将游标中的值赋值给变量,注意:变量名不要与sql返回的列名相同,变量顺序要和sql结果列的顺序一致
fetch report into v_zbrq,v_userid,v_createtime;
-- 当s不等于1时,也就是未遍历完时,会一直循环
while s<>1 do
-- 执行业务逻辑
insert into t_system_check_master(rq,`type`,createuser,createtime) values (v_zbrq,'1',v_userid,v_createtime);
-- 将游标里面的值重新赋值给变量
fetch report into v_zbrq,v_userid,v_createtime;
-- 当s等于1时代表遍历已完成,退出循环
end while;
-- 关闭游标
close report ;
END
-- 调用存储过程
call add_master_msg();
-- 关闭存储过程
-- 查看正在执行的程序
show full processlist;
-- 14 存储过程的id
kill 14