通常、テーブルに行番号 (row_number(0)) を追加し、行番号に従ってループするのが好きです。これはカーソルの標準的な使用方法です。テーブルに行番号を追加してからループする方法は、テーブルに行番号を追加してからループする方法が比較的一般的です。 Oracle、SQL、MySQL 大量に使用できます データ収集時に行番号にインデックスを付けることもできます データベース内でインデックスを使用することをお勧めします
CREATE DEFINER = 'root'@'localhost'
PROCEDURE LoopByLine()
BEGIN
DECLARE MyStation char(20);
DECLARE N int DEFAULT 0;
DECLARE MyID int DEFAULT 0;
DECLARE MyScore dec(5,1);
DECLARE MyTotalScore dec(5,1);
DECLARE done INT DEFAULT FALSE;
DECLARE MyCursor CURSOR FOR
SELECT ID,Station,Score FROM StationScore;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
set MyTotalScore=0;
OPEN MyCursor;
#开始游标
read_loop:LOOP
#取每行的值插入的定义的变量
FETCH MyCursor INTO MyID,MyStation,MyScore;
#如果已全部遍历完
IF done THEN
LEAVE read_loop;
END IF;
set MyTotalScore=MyTotalScore+MyScore;
set N=N+1;
END LOOP;
CLOSE MyCursor;
SELECT MyTotalScore,N;
END