提问人:wiam leo 提问时间:9/19/2022 最后编辑:Rohit Guptawiam leo 更新时间:9/20/2022 访问量:411
如何使用 while 循环计算 MySQL 中前 100 个整数的总和
how to calculate the sum of the first 100 integers in MySQL with a while loop
问:
我必须找到前 100 个自然数的总和。1+2+3+...+n,依此类推。使用“while 循环”时。
delimiter $
create procedure `calcul`.somme()
begin
declare s int default 0;
declare i int default 1;
while(i<=100) do
set s := s+i;
set i := i+1;
end while;
select s;
end;
$
call `calcul`.somme()
当我调用 somme() 时,我收到此错误 -->
call calcul.somme()= Error Code: 2013. Lost connection to MySQL server during query
答:
0赞
Rohit Gupta
9/19/2022
#1
查询花费的时间太长,引擎超时。
您可以在 MySQL Workbench 中编辑 SQL 编辑器首选项:
- 在应用程序菜单中,选择“编辑>首选项”>“SQL 编辑器”。
- 查找 MySQL 会话部分并增加 DBMS 连接读取超时值。
- 保存设置,相当MySQL Workbench并重新打开连接。
评论
0赞
wiam leo
9/19/2022
Emm 相同的错误,总和不起作用
0赞
Rohit Gupta
9/19/2022
您是否找到了设置,尝试了至少 6000,并且是否重新打开了连接?也许尝试重新启动mysql。
0赞
P.Salmon
9/19/2022
'Wiam Leo' - 尽量更具体 - 你是说连接问题仍然存在还是程序没有产生正确的结果,请确认你修改为设置 i := i+1;NB 循环很慢。.减少到 10 检查它是否有效,然后推高到所需的限制,最好还是参数化。
0赞
wiam leo
9/20/2022
#2
use calcul;
delimiter $
create procedure somme()
begin
declare s int default(0);
declare i int default(1);
while(i<=100) do
set s := s+i;
set i := i+1;
end while;
select s;
end;
$
CALL somme()
谢谢,问题解决了 👌
评论
set i := i=1;
+1
SELECT 5050;
SET @i=100; SELECT (@i+1)*@i/2;
将是您的另一个选择