2012-11-28 61 views
0

我有一個SP遊標,可以很好地處理除了一組數據以外的所有數據。這個SP嵌套了遊標。 光標是這樣的:MySQL光標過早退出

... 
BLOCK1: begin 
DECLARE cur1 CURSOR FOR select date, value1, value2 from excel.tc where date >= first_mov and id_fk = idz order by date DESC; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 
OPEN cur1; 

read_loop_1: LOOP 

    FETCH cur1 into datez, value1z, value2z; 

    IF done THEN 
     'exit loop 
...lots of code 

END LOOP; 
end BLOCK1; 

我的嵌套的遊標遵循相同的模式,開放的塊並宣佈光標和處理程序。除了一組特定的數據外,SP工作。遊標不會遍歷所有行,即使CURSOR FOR SELECT中的所有值都正確(我已經調試過它)。而且這個數據沒有任何不同,除了行沒有被日期物理排序。

有什麼會導致此問題?我正在使用MySQL 5.0.26。

**編輯:一些數據來說明:

使用這組數據的不工作,光標停在第三排(在按日期排序,DESC):

date  value1  value2 id_fk  id 
2006-02-17 0.920000 1.000000 12  25 
2006-12-22 0.912000 1.000000 12  26 
2007-04-24 0.818000 1.000000 12  27 
2004-07-30 0.013650 1.000000 12  820 
2004-10-30 0.012280 1.000000 12  821 
2004-12-31 0.008960 1.000000 12  822 
2005-04-16 0.006350 1.000000 12  823 
2005-12-23 0.000000 -20.00000 12  824 
2005-12-23 0.630000 1.000000 12  825 
2003-12-31 0.020480 1.000000 12  826 
2004-04-24 0.000850 1.000000 12  827 
+0

您是否可能遇到超時或其他配置的服務器限制? –

+0

@Michel Feldheim不,它只是退出循環並繼續。 – ftkg

+0

程序繼續運行? –

回答

0

我問題是我有一個select into var...返回null,並被認爲是處理程序的NOT FOUND的條件。這是有據可查的,但我錯過了它。