#创建光标
DECLARE $done INT DEFAULT 0;
DECLARE PMC_CH CURSOR FOR
SELECT A.FBillNo,B.FMethodID,B.FID
FROM WincoBosCombinedPmc A INNER JOIN WincoBosCombinedPmcEntry B
ON(A.FBillNO=B.FWorkNo)
WHERE(B.FOrder=$M_FOrder)AND(B.FMethodID!=2)
ORDER BY B.FEntryID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET $done=1;SET $maxCount=0;
SET $j=0;
SELECT COUNT(FWorkNo) INTO $maxCount FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)
GROUP BY FID;
OPEN PMC_CH;
REPEAT
FETCH PMC_CH INTO $T_FWorkNo,$T_FMethodID,$T_FID;
IF NOT $done THEN
IF($T_FMethodID=3)OR($T_FMethodID=4)THEN
UPDATE WincoBosCombinedPmcEntry
SET FEntryID=$maxCount+1
WHERE(FWorkNo=$T_FWorkNo)AND(FID=$T_FID);
SET $maxCount=$maxCount+1;
ELSE
UPDATE WincoBosCombinedPmcEntry
SET FEntryID=$j+1
WHERE(FWorkNo=$T_FWorkNo)AND(FID=$T_FID);
SET $j=$j+1;
END IF;
END IF;
UNTIL $done END REPEAT;
CLOSE PMC_CH;
错误提示为“Result consisted of more than one row”,将红色标记的代码去掉则无问题,大家看看是怎么回事?
DECLARE $done INT DEFAULT 0;
DECLARE PMC_CH CURSOR FOR
SELECT A.FBillNo,B.FMethodID,B.FID
FROM WincoBosCombinedPmc A INNER JOIN WincoBosCombinedPmcEntry B
ON(A.FBillNO=B.FWorkNo)
WHERE(B.FOrder=$M_FOrder)AND(B.FMethodID!=2)
ORDER BY B.FEntryID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET $done=1;SET $maxCount=0;
SET $j=0;
SELECT COUNT(FWorkNo) INTO $maxCount FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)
GROUP BY FID;
OPEN PMC_CH;
REPEAT
FETCH PMC_CH INTO $T_FWorkNo,$T_FMethodID,$T_FID;
IF NOT $done THEN
IF($T_FMethodID=3)OR($T_FMethodID=4)THEN
UPDATE WincoBosCombinedPmcEntry
SET FEntryID=$maxCount+1
WHERE(FWorkNo=$T_FWorkNo)AND(FID=$T_FID);
SET $maxCount=$maxCount+1;
ELSE
UPDATE WincoBosCombinedPmcEntry
SET FEntryID=$j+1
WHERE(FWorkNo=$T_FWorkNo)AND(FID=$T_FID);
SET $j=$j+1;
END IF;
END IF;
UNTIL $done END REPEAT;
CLOSE PMC_CH;
错误提示为“Result consisted of more than one row”,将红色标记的代码去掉则无问题,大家看看是怎么回事?
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)
GROUP BY FID;返回的记录多于1条,检查一下
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)
GROUP BY FID;改成,把GROUP BY FID去掉SELECT COUNT(FWorkNo) INTO $maxCount FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2) ;
(
SELECT COUNT(FWorkNo) as mcnt FROM WincoBosCombinedPmcEntry
WHERE(FOrder=$M_FOrder)AND(FMethodID!=2)
GROUP BY FID
) t;