Mysql 而循环在获取某些数据后终止
我编写了一个过程,该过程创建一个临时表,并通过从临时表中获取行来执行查询。我在临时表中有大约13486行。但是当我调用该过程时,我发现该过程在从临时表中获取107行后被终止。此外,我还发现值不是常数。有时它是107,有时它是114,有时它只是100。为什么会发生这种情况?需要帮助吗?请有人帮帮。这是我的过程。我知道while循环将终止>1000次迭代。请给我建议一种克服这种情况的方法Mysql 而循环在获取某些数据后终止,mysql,while-loop,Mysql,While Loop,我编写了一个过程,该过程创建一个临时表,并通过从临时表中获取行来执行查询。我在临时表中有大约13486行。但是当我调用该过程时,我发现该过程在从临时表中获取107行后被终止。此外,我还发现值不是常数。有时它是107,有时它是114,有时它只是100。为什么会发生这种情况?需要帮助吗?请有人帮帮。这是我的过程。我知道while循环将终止>1000次迭代。请给我建议一种克服这种情况的方法 DELIMITER $$ DROP PROCEDURE IF EXISTS `lookup`.`test` $
DELIMITER $$
DROP PROCEDURE IF EXISTS `lookup`.`test` $$
CREATE PROCEDURE `lookup`.`test` ()
BEGIN
CREATE TEMPORARY TABLE lookup.airportname(id int AUTO_INCREMENT,PRIMARY KEY(id))
AS (select distinct airport_id from lookup.airport);
SET @num=0;
SET @arpt=NULL;
SELECT count(*) INTO @num FROM airportname;
SET @i=0;
while @i<@num do
SELECT airport_id INTO @arpt FROM airportname WHERE id=@i;
select @arpt,@i;
set @i=@i+1;
end while;
END $$
DELIMITER ;
我使用的是mysql查询浏览器。谢谢。如果您想在id中插入值,那么它不应该是自动递增的。-从表定义中删除自动增量,它应该可以使用分隔符| 创建员工选择程序 开始 宣布empno,于9年完成 声明emp_select游标,用于从工资总额中选择emp_no 为未找到的集合声明CONTINUE处理程序done=1 打开emp_select;//光标打开 read_loop:loop//开始逐个循环所有数据
fetch emp_select into empno; // fetching the select value into variable empno
//注意:变量名称不应与select语句中的列名称相同
IF done THEN
LEAVE read_loop; // if no more rows, this makes it to leave the loop"
END IF;
//Enter the code you want do for each row
end loop;
关闭emp_选择
结束|
定界符 您如何知道它已终止?输出可能已被修剪。删除循环内的选择,并在循环后执行相同的选择。让我们看看@i是否是13487。是的,它是13486。它是如何被修剪的你确定id是连续的并且不包含间隙吗?是的,我非常确定,我只想让它们排序,这样我就可以一个接一个地获取它们。除了添加id之外,你对获取每一行有什么想法吗?如果有,请指导我。谢谢你使用继续处理程序,你可以。。。我将粘贴我的一个SP shorty。。在回答中,这是否仅适用于游标?或者我可以将其用于任何方法?对于SP内的循环记录,您必须使用游标。。。continue处理程序用于任何错误处理。。若要继续运行过程/代码,即使出现错误-用法可能超出游标范围