Mysql 无法在嵌套游标存储过程中获得预期的输出
我有一个数据集,表名为“Closing\u balance\u child”,如下所示 这里我想获取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不
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;
将非常感谢提供援助