Mysql存储过程怎么跳出死循环While语句的方法。

莳杉捻荮 2013-05-29 04:35:38
DROP PROCEDURE IF EXISTS `Sum_wage`;

CREATE DEFINER = `root`@`localhost` PROCEDURE `Sum_wage`(pwage int,awage int)
BEGIN
WHILE 1=1 DO
if (select count(*) from ProWage)>2*(select count(*) from ProWage where Wage>=@PWage)
then update ProWage set Wage=Wage+AWage;
ELSE
goto label_name;
end if;
END WHILE;
LABEL label_name;
END;

其中goto label_name; LABEL label_name;报错。请问Mysql存储过程中不支持GOTO,LABEL吗?
另外在else中想跳出循环,怎么做?
...全文
1323 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
莳杉捻荮 2013-05-29
  • 打赏
  • 举报
回复
嗯。两个都可以。谢谢哈!还有个问题就是Mysql存储过程中不支持GOTO,LABEL吗?
wwwwb 2013-05-29
  • 打赏
  • 举报
回复
ELIMITER $$ DROP PROCEDURE IF EXISTS `Sum_wage`$$ CREATE DEFINER = `root`@`localhost` PROCEDURE `Sum_wage`(pwage INT,awage INT) BEGIN tt:WHILE 1=1 DO IF (SELECT COUNT(*) FROM ProWage)>2*(SELECT COUNT(*) FROM ProWage WHERE Wage>=@PWage) THEN UPDATE ProWage SET Wage=Wage+AWage; ELSE LEAVE tt; END IF; END WHILE; END$$ DELIMITER ;
rucypli 2013-05-29
  • 打赏
  • 举报
回复
直接 WHILE (select count(*) from ProWage)>2*(select count(*) from ProWage where Wage>=@PWage) do update end while

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧