Mysql 如何在程序中比较IF条件

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

我已经创建了一个过程,它工作得很好,但是它从来没有进入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_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的任何更改