0

私は正常に動作するプロシージャを作成しましたが、if ブロック内に入ることはありません。if では、leave_Type を '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
4

1 に答える 1

1

文字列を比較する場合

IF @lt = 'CL' THEN 

では、文字列比較関数を使用するべきではありませんか?

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

于 2013-07-09T07:58:31.010 に答える