mysql游标执行

mysql游标执行,mysql,Mysql,错误- 错误 MySQL说:文档 1329-无数据-获取、选择或处理的行数为零 在执行调用的存储过程之后 call cursorproc (@p_out); select @p_out as temp; create procedure cursorproc(OUT p_out DECIMAL(10,2)) begin declare l_salary, l_total DECIMAL(10,2); declare cur_1 cursor for select line_

错误-


错误

MySQL说:文档

1329-无数据-获取、选择或处理的行数为零
在执行调用的存储过程之后

call cursorproc (@p_out);
select @p_out as temp;
create procedure cursorproc(OUT p_out DECIMAL(10,2))
begin

   declare l_salary, l_total DECIMAL(10,2);

   declare cur_1 cursor for select line_distance from elements;
   
   open cur_1;

   set l_total = 0;

   loop

      fetch cur_1 into l_salary;

      
         set l_total = l_total + l_salary;
      
  end loop;

   close cur_1;

   set p_out = l_total;

end;

以下代码已成功执行-存储过程

call cursorproc (@p_out);
select @p_out as temp;
create procedure cursorproc(OUT p_out DECIMAL(10,2))
begin

   declare l_salary, l_total DECIMAL(10,2);

   declare cur_1 cursor for select line_distance from elements;
   
   open cur_1;

   set l_total = 0;

   loop

      fetch cur_1 into l_salary;

      
         set l_total = l_total + l_salary;
      
  end loop;

   close cur_1;

   set p_out = l_total;

end;


有什么办法可以解决我们所缺少的问题吗?请提供帮助。

在读取数据时,您应该检查数据集的结尾。 看看这里的例子-

另外,我建议您避免打开游标-

SELECT SUM(line_distance) INTO @var FROM  elements;
SELECT @var;