Mysql 如何在程序中比较IF条件
我已经创建了一个过程,它工作得很好,但是它从来没有进入if块。在if中,我将leave_类型与“Cl”进行比较Mysql 如何在程序中比较IF条件,mysql,Mysql,我已经创建了一个过程,它工作得很好,但是它从来没有进入if块。在if中,我将leave_类型与“Cl”进行比较 CREATE DEFINER=`satish`@`%` PROCEDURE `p_Leave_Approval`( IN uname varchar(45), IN coment varchar(200), IN approval varchar(1) ) BEGIN -- declare str varchar(2); -- set str = 'CL'; SELECT Emp_I
CREATE DEFINER=`satish`@`%` PROCEDURE `p_Leave_Approval`(
IN uname varchar(45),
IN coment varchar(200),
IN approval varchar(1)
)
BEGIN
-- declare str varchar(2);
-- set str = 'CL';
SELECT Emp_ID INTO @empid
FROM employee
WHERE Emp_F_Name=uname;
UPDATE staff_leave_detail
SET Leave_Comment=coment
,Leave_Status=approval
WHERE Emp_ID=@empid
AND Leave_Status='P';
SELECT Leave_Start_Date, Leave_End_Date INTO @sd, @ed
FROM staff_leave_detail
WHERE Emp_ID=@empid AND Leave_Status='P';
SELECT DATEDIFF(@sd,@ed) AS 'd2 - d1' INTO @s;
SELECT Leave_Type INTO @lt
FROM staff_leave_detail
WHERE Emp_ID=@empid
AND Leave_Status='P';
IF @lt = 'CL' THEN
UPDATE staff_leave
SET AP_CL = AP_CL - @s ,
AV_CL = AV_CL + @S
WHERE Emp_ID = @empid ;
END IF;
END
如果要比较中的字符串
IF @lt = 'CL' THEN
那么您不应该使用字符串比较函数吗
您不是在声明
@lt
或其他任何东西。。。。你确定@lt
是字符串吗?请声明您的变量。您确定要设置的@lt
选择的是否返回一行?@lt存储员工休假类型的休假详情值。如果我以简单的查询方式执行,效果会很好:Damien->i hope当我单独执行时:选择Leave_键入@lt from sims.staff_Leave_detail,其中Emp_ID=4,然后Leave_Status='P';选择@lt;然后显示@lt=cls问题可能是@s的计算。。。。即使正确执行了if,如果@s-出于任何原因-为0,您也不会看到对AP_CL,AV_CL的任何更改