Mysql 而循环在获取某些数据后终止

Mysql 而循环在获取某些数据后终止,mysql,while-loop,Mysql,While Loop,我编写了一个过程,该过程创建一个临时表,并通过从临时表中获取行来执行查询。我在临时表中有大约13486行。但是当我调用该过程时,我发现该过程在从临时表中获取107行后被终止。此外,我还发现值不是常数。有时它是107,有时它是114,有时它只是100。为什么会发生这种情况?需要帮助吗?请有人帮帮。这是我的过程。我知道while循环将终止>1000次迭代。请给我建议一种克服这种情况的方法 DELIMITER $$ DROP PROCEDURE IF EXISTS `lookup`.`test` $

我编写了一个过程,该过程创建一个临时表,并通过从临时表中获取行来执行查询。我在临时表中有大约13486行。但是当我调用该过程时,我发现该过程在从临时表中获取107行后被终止。此外,我还发现值不是常数。有时它是107,有时它是114,有时它只是100。为什么会发生这种情况?需要帮助吗?请有人帮帮。这是我的过程。我知道while循环将终止>1000次迭代。请给我建议一种克服这种情况的方法

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处理程序用于任何错误处理。。若要继续运行过程/代码,即使出现错误-用法可能超出游标范围