while循环在获取一些数据后终止

时间:2013-03-27 09:03:48

标签: mysql while-loop

我编写了一个创建临时表并通过从临时表中提取行来执行查询的过程。我在临时表中有大约13486行。但是当我调用该过程时,我发现该过程正在获取从临时表中获取107行后终止。此外,我还观察到这个值不是常数。有时它是107而另一次是114而另一些时间它只是100.为什么会发生这种情况?请帮助吗?有人请...这是我的程序。我知道虽然循环将终止> 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查询浏览器。谢谢。

2 个答案:

答案 0 :(得分:0)

如果要将值插入到id中则不应该是auto_increment。 - 从表定义中删除auto_increment,它应该可以正常工作

答案 1 :(得分:0)

分隔符|

创建过程employee_select()

开始

声明empno,完成int(9);

从gross_salary声明emp_select Cursor选择emp_no;

DECLARE CONTINUE HANDLER for NOT FOUND SET done = 1;

打开emp_select; //光标打开

read_loop:loop //逐个开始循环所有数据

fetch emp_select into empno; // fetching the select value into variable empno 

//注意:变量名称不应与select语句“

中的columne名称相同
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_select;

结束|

分隔符;