2013-07-09 28 views
0

我創建的程序工作正常,但它永遠不會進入if塊。在if中,我將leave_Type與'Cl'比較。如何在IF條件中比較過程

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 [email protected] 
     AND Leave_Status='P'; 

SELECT Leave_Start_Date, Leave_End_Date INTO @sd, @ed 
FROM staff_leave_detail 
WHERE [email protected] AND Leave_Status='P'; 

SELECT DATEDIFF(@sd,@ed) AS 'd2 - d1' INTO @s; 
SELECT Leave_Type INTO @lt 
FROM staff_leave_detail 
WHERE [email protected] 
     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 
+0

您還沒有宣佈'@ lt'或其他任何東西....你確定'@ lt'是一個字符串?請聲明你的變量。 – Namphibian

+0

你確定'SELECT'是用來設置'@ lt'是否返回一行嗎? –

+0

@lt存儲staff_leave_detail的值Leave_Type。並工作正常,如果我執行簡單的查詢: – Subodh

回答