0
我的光標正在處理第一條記錄並出來。這不是第二張唱片。可能是什麼問題?以下是我的代碼:MariaDB光標循環問題
有超過600,000行要處理。當我執行選擇查詢時,它顯示了正確的行數,但循環不起作用。
Delimiter $$
CREATE PROCEDURE p_updateHistory_1()
BEGIN
DECLARE v_symbol varchar(10);
DECLARE v_pricedate date;
DECLARE done BOOL DEFAULT FALSE;
DECLARE cur1 CURSOR FOR SELECT symbol, PriceDate
from StockData
where PriceDate > '2016-06-30'
order by symbol asc, PriceDate desc;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO v_symbol, v_pricedate;
If done THEN
LEAVE read_loop;
END IF;
Update StockData SET
20DayTPAvg = f_TP20avg(symbol,PriceDate),
20DayMFSum = f_20DayMFSum(symbol,PriceDate),
20DayVolumeSum = f_20DayVolumeSum(symbol,PriceDate),
MFFactor = f_20DayMFSum(symbol,PriceDate)/f_20DayVolumeSum(symbol,PriceDate),
50DayHighestHigh = f_50DayHighestHigh(symbol,PriceDate),
50DayLowestLow = f_50DayLowestLow(symbol,PriceDate),
50DayFactor = ((close-f_50DayLowestLow(symbol,PriceDate))/(f_50DayHighestHigh(symbol,PriceDate)-f_50DayLowestLow(symbol,PriceDate)))*100,
20DayAvgOf50DayFactor = f_20DayAvgOf50DayFactor(symbol,PriceDate),
50DayMAvg20DayBfr = f_20DayMAvg20DayBfr(symbol,PriceDate),
20DayAvgSqCh50DMA = f_20DayAvgSqCh50DMA(symbol,PriceDate),
20dStdDevOf50DayMovAvg = SQRT(f_20DayAvgSqCh50DMA(symbol,PriceDate)),
UpperBand = 50DayMovingAvg+2*SQRT(f_20DayAvgSqCh50DMA(symbol,PriceDate)),
LowerBand = 50DayMovingAvg-2*SQRT(f_20DayAvgSqCh50DMA(symbol,PriceDate)),
MidPointFactor = ((close-MidPoint)/(high-close))*100,
20DayAvgOfMPFactor = f_20DayAvgOfMPFactor(symbol,PriceDate)
Where symbol=v_symbol
And PriceDate=v_pricedate;
commit;
END LOOP;
CLOSE Cur1;
END $$
Delimiter ;
任何建議,如果我在這裏做錯了什麼? – 44KF