2014-10-04 37 views
-1
DELIMITER $$ 
CREATE PROCEDURE update_salary() 
BEGIN 
UPDATE employee SET salary = salary*1.4 where e_desc = 'Senior Manager'; 

UPDATE employee SET salary = salary*1.2 where e_desc = 'Manager'; 

UPDATE employee SET salary = salary*1.1 where e_desc = 'Assistant manager'; 

End $$ 
DELIMITER ; 

我創建存儲過程到My_sql來更新表值。它正在工作,但是,我想要更改它只更新一組行。我如何創建存儲過程更新只有一組行...........?

例如當我給'經理'只更新該列。

我該怎麼做?

回答

0

您可以用IF語句做到這一點,像這樣你的存儲過程中..

DELIMITER $$ 
CREATE PROCEDURE update_salary(IN employeeType VARCHAR(255)) 
BEGIN 
IF (employeeType = "Seinor Manager") THEN 
    UPDATE employee SET salary = salary*1.4 where e_desc = 'Senior Manager'; 
ELSEIF (employeeType = "Manager") THEN 
    UPDATE employee SET salary = salary*1.2 where e_desc = 'Manager'; 
ELSE 
    UPDATE employee SET salary = salary*1.1 where e_desc = 'Assistant manager'; 
END IF; 
End $$ 
DELIMITER ; 

,或者你可以用一個case語句太多,如果這套房,爲您做的更好

DELIMITER $$ 
CREATE PROCEDURE update_salary(IN employeeType VARCHAR(255)) 
BEGIN 
CASE employeeType 
    WHEN "Seinor Manager") 
    THEN UPDATE employee SET salary = salary*1.4 where e_desc = 'Senior Manager'; 
    WHEN "Manager" 
    THEN UPDATE employee SET salary = salary*1.2 where e_desc = 'Manager'; 
    ELSE 
    UPDATE employee SET salary = salary*1.1 where e_desc = 'Assistant manager'; 
END; 
End $$ 
DELIMITER ; 
+0

謝謝@john現在正在工作。 – uma 2014-10-05 02:28:39