MySQL ストアド プロシージャ カーソル LOOP

通常、テーブルに行番号 (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

おすすめ

転載: blog.csdn.net/qq_34677276/article/details/131930859