0
我想第一次創建存儲過程和遊標,它不像預期的那樣行爲。一切都很好,但輸出數據不正確。如果我手動迭代,我會得到我所期望的,但不通過存儲過程。MYSQL遊標重複錯誤的數據
如果您查看下面的輸出表,前三條記錄是正確的,並且所有後續條目的GID都是正確的,但PTS彙總不正確並重復相同的值。
步驟:
DELIMITER //
CREATE PROCEDURE creategamesummary()
BEGIN
DECLARE curdone TINYINT DEFAULT 0;
DECLARE curgid INT;
DECLARE curwk INT;
DECLARE gamescursor CURSOR
FOR
SELECT g1.GID FROM games g1 WHERE g1.SEAS = 2008 AND g1.WK > 4 AND (g1.V = 'BAL' OR g1.H = 'BAL') ORDER BY GID;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET curdone=1;
OPEN gamescursor;
REPEAT
FETCH gamescursor into curgid;
SET curwk = (SELECT WK FROM games WHERE GID = curgid);
REPLACE INTO gamesummary
SELECT
curgid as GID,
SUM(t1.PTS) as PTS
FROM
team t1
WHERE
t1.GID IN (
SELECT
g2.GID
FROM
games g2
WHERE
(g2.V = 'BAL' OR
g2.H = 'BAL') AND
g2.SEAS = 2008 AND
g2.WK <= curwk
) AND t1.TNAME = 'BAL';
UNTIL curdone END REPEAT;
CLOSE gamescursor;
END//
DELIMITER ;
輸出表:
GID,PTS
2182,75
2196,78
2212,105
2223,127
2240,127
2259,127
2268,127
2288,127
2306,127
2327,127
2330,127
2346,127
2371,127
2379,127
2381,127
2385,127