0

我编写了一个创建临时表并通过从临时表中获取行来执行查询的过程。我在临时表中有大约 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查询浏览器。谢谢。

4

2 回答 2

0

如果你想将值插入 id 那么它不应该是 auto_increment。- 从表定义中删除 auto_increment,它应该可以工作

于 2013-03-27T10:07:50.553 回答
0

分隔符 |

创建过程employee_select()

开始

声明 empno,done int(9);

为从 Gross_salary 中选择 emp_no 声明 emp_select 游标;

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语句中的列名相同"

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;

结束 |

分隔符;

于 2013-03-27T10:41:24.800 回答