有关于MYSQL回滚的存储过程问题
BEGIN DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR 1062 SET t_error=1; set autocommit=0; START TRANSACTION; call put_playerbehavior(i_playerid,i_gameid,i_channelid,i_acttime,@a); IF t_error=1 then rollback; call put_playerbehavior(i_playerid,i_gameid,i_channelid,i_acttime,@a); END IF; COMMIT; END
begin DECLARE v_playerid int; DECLARE v_gameid int; DECLARE v_channelid int; DECLARE done int; DECLARE v_acttime datetime; DECLARE v_endday datetime; DECLARE cur_behavior CURSOR FOR select playerid,gameid,channelid,acttime from playerbehavior where acttime >= i_startday and acttime < date_add(i_endday,INTERVAL 1 day); declare continue handler FOR SQLSTATE '02000' SET done = 1; set o_out=0; set v_endday=date_add(i_endday,INTERVAL 1 day); open cur_behavior; repeat FETCH cur_behavior INTO v_playerid,v_gameid,v_channelid,v_acttime; CALL test_roll(v_playerid,v_gameid,v_channelid,v_acttime,@a); until done end repeat; close cur_behavior; set o_out=1; end第二个存储过程调用第一个存储过程,功能是把playerbehavior表中符合条件的数据用test_roll存储过程进行分析处理,讲结果放到一张表中,但是实际运行过程中,符合条件的最后一条数据会重复运行一次,不知道是什么情况~求大神解惑~分析的存储过程是没错的,就是以上2个存储过程~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
谢谢~~那有什么办法能解决么~
大神,膜拜一下
rp_1:repeat
fetch cur** into **;
if done=1 then
leave rp_1;
end if;
call procedure(********);
until done end repeat rp_1: