-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$CREATE DEFINER=`root`@`` PROCEDURE `EmployeeWorkingHour_GetLeftEmployeeWorkingHours`(
    _EmployeeId INT,
    _Datetime date,
    OUT _LeftHours FLOAT
)
BEGIN    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
    START TRANSACTION;
        SAVEPOINT SP;
    
    SET _LeftHours = 0;
    SET @_Total=0;    SELECT  V INTO @_Total FROM SystemVar;
    SELECT (@_Total-WorkingHours) INTO _LeftHours FROM EmployeeWorkingHour
    WHERE 
        EmployeeId = _EmployeeId AND
        WorkingDate = _Datetime;
    
    IF _LeftHours < 0 THEN
        ROLLBACK TO SAVEPOINT SP;
        SET _LeftHours  = -1;
    END IF;    IF _LeftHours IS NULL OR _LeftHours='' THEN
        SET _LeftHours=@_Total;
        COMMIT; 
    END IF;
    
    IF _LeftHours=0 THEN
        SET _LeftHours=0;
        COMMIT;
    ELSE
        COMMIT;
    END IF;
    
    IF @@ERROR_COUNT <> 0 THEN
        ROLLBACK TO SAVEPOINT SP;
    ELSE
        COMMIT;
    END IF;
    
END$$
为什么当我值是0的时候他还是不走 SET _LeftHours=0;这部呢 始终走的是SET _LeftHours=@_Total;在线等 望高手帮帮忙!!!!