-- --------------------------------------------------------------------------------
-- 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;在线等 望高手帮帮忙!!!!
-- 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;在线等 望高手帮帮忙!!!!
原理:
print(convert(float,''))