Mysql 无法在嵌套游标存储过程中获得预期的输出

Mysql 无法在嵌套游标存储过程中获得预期的输出,mysql,stored-procedures,relational-database,Mysql,Stored Procedures,Relational Database,我有一个数据集,表名为“Closing\u balance\u child”,如下所示 这里我想获取AccountID,其中CurrBal不等于OpeningBalance下一年的YearMasterId 例如,让我们检查前两行 AccountID - 2060 , CompanyID - 1, YearMasterID = 2 AccountID - 2060 , CompanyID - 1, YearMasterID = 3 第二行的OpeningBalance与第一行的CurrBal不

我有一个数据集,表名为“Closing\u balance\u child”,如下所示

这里我想获取
AccountID
,其中
CurrBal
不等于
OpeningBalance
下一年的
YearMasterId

例如,让我们检查前两行

AccountID - 2060 , CompanyID - 1, YearMasterID = 2
AccountID - 2060 , CompanyID - 1, YearMasterID = 3
第二行的
OpeningBalance
与第一行的
CurrBal
不匹配

因此,预期产出为20602061

这就是我要做的

DELIMITER $$

DROP PROCEDURE IF EXISTS `curdemo11` $$

CREATE PROCEDURE `curdemo11`(OUT res VARCHAR(100))

BEGIN
DECLARE finished ,done BOOLEAN DEFAULT FALSE;
DECLARE a,i INT;
DECLARE accountID,companyID,yearMasterID INT;
DECLARE currClosing,curreOpening,previousBal DOUBLE(10,4);

DECLARE cur1 CURSOR FOR SELECT AccountID FROM (SELECT ID,AccountID,CompanyID,YearMasterID,CurrBal,OpeningBalance FROM 
`Closing_balance_child`
WHERE CurrBal != '0.0000' AND OpeningBalance != '0.0000'
GROUP BY AccountID,CompanyID,YearMasterID) AS t
GROUP BY AccountID
HAVING COUNT(AccountID) > 1 LIMIT 2;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = TRUE;

OPEN cur1;

cur1_loop : LOOP

FETCH FROM cur1 INTO a ;

        IF finished THEN
        CLOSE cur1;
        LEAVE cur1_loop;
        END IF;

    BLOCK2: BEGIN

    DECLARE cur2 CURSOR FOR SELECT AccountID,CompanyID,YearMasterID,CurrBal,OpeningBalance FROM 
    `Closing_balance_child`
    WHERE AccountID = a;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    OPEN cur2;

    cur2_loop1 : LOOP

    FETCH FROM cur2 INTO accountID,companyID,yearMasterID,currClosing,curreOpening;

    SET previousBal = currClosing;
    SET i=0;

    IF finished THEN
            SET finished = FALSE;
            CLOSE cur2;
            LEAVE cur2_loop1;
        END IF; 

    SET res = a;

    IF (previousBal != curreOpening AND i != 0) THEN
    SET res = a;
    END IF;

        SET i=i+1;
    END LOOP cur2_loop1;
    END BLOCK2;

END LOOP cur1_loop;

END $$

DELIMITER ;

CALL curdemo11(@res); SELECT @res;
将非常感谢提供援助