Mysql 在存储过程中处理多个嵌套游标

Mysql 在存储过程中处理多个嵌套游标,mysql,stored-procedures,Mysql,Stored Procedures,如何在同一例程中使用两个游标?创建过程时出现“游标或处理程序声明后的变量或条件声明”错误。 我必须同时使用整数outerDone和innerDone来检查游标是否指向null。 我还没有研究过存储过程。谁能解决这个问题。提前谢谢 DELIMITER ##; create procedure updateStopTimeColumn() BEGIN DECLARE outerDone INT DEFAULT 0; DECLARE vehicle_record CURSOR FOR SELECT `

如何在同一例程中使用两个游标?创建过程时出现“游标或处理程序声明后的变量或条件声明”错误。 我必须同时使用整数outerDone和innerDone来检查游标是否指向null。 我还没有研究过存储过程。谁能解决这个问题。提前谢谢

DELIMITER ##;
create procedure updateStopTimeColumn()
BEGIN
DECLARE outerDone INT DEFAULT 0;
DECLARE vehicle_record CURSOR FOR SELECT `vehicleId` FROM `vehicle`;
DECLARE current_record CURSOR FOR SELECT `id`,`tsTime`,`teTime` FROM `trip` where `vehicleId`=vehId order by `tsTime`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET outerDone = 1;
DECLARE vehId,tripId CHAR(250);
DECLARE currentTsTime,currentTeTime time;

OPEN vehicle_record;
REPEAT  
    FETCH vehicle_record INTO vehId;


block2 : BEGIN
    DECLARE innerDone INT DEFAULT 0;
    DECLARE tempTripId CHAR(250);
    DECLARE tempTsTime,tempTeTime time;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET innerDone = 1;

    OPEN current_record;

    FETCH current_record INTO tempTripId, tempTsTime,tempTeTime;

    REPEAT
        FETCH current_record INTO tripId,currentTsTime,currentTeTime;
        UPDATE trip set stopTime=(currentTeTime-tempTsTime) where id=tempTripId and tempTeTime IS NOT NULL;

        SET tempTripId=tempId;
        SET tempTsTime=currentTsTime;
        SET tempTeTime=currentTeTime;

    UNTIL innerDone END REPEAT;
END block2;
CLOSE current_record;
UNTIL outerDone END REPEAT;

CLOSE vehicle_record;
END; ##
DELIMITER;

你试过搬家吗

DECLARE vehId,tripId CHAR(250);
DECLARE currentTsTime,currentTeTime time;

在您的游标之前添加语句?

如果可能,您可以为您的问题创建SQL FIDLE吗?它只是让测试解决方案变得更容易。