IF condition THEN-- 条件成立时执行的代码ELSEIF another_condition THEN-- 其他条件成立时执行的代码ELSE-- 所有条件不成立时执行的代码ENDIF;
2、示例(int类型)
-- 删除存储过程DROPPROCEDUREIFEXISTS check_value;-- 创建存储过程DELIMITER $$
CREATEPROCEDURE check_value(IN val INT)BEGINIF val >10THENSELECT CONCAT(val,' Value is greater than 10')as log;ELSEIF val =10THENSELECT CONCAT(val,' Value is exactly 10')as log;ELSESELECT CONCAT(val,' Value is less than 10')as log;ENDIF;END $$
DELIMITER;-- 调用存储过程CALL check_value(5);
3、示例(varchar类型)
-- 删除存储过程DROPPROCEDUREIFEXISTS check_value;-- 创建存储过程DELIMITER $$
CREATEPROCEDURE check_string(IN str VARCHAR(255))BEGINIF str ='apple'THENSELECT'The string is "apple"';ELSEIF str ='banana'THENSELECT'The string is "banana"';ELSESELECT'The string is neither "apple" nor "banana"';ENDIF;END $$
DELIMITER;-- 调用存储过程CALL check_string('orange');
二、CASE
1、简单case语句
1、语法
CASE case_valueWHEN when_value THEN statement_list[WHEN when_value THEN statement_list]...[ELSE statement_list]ENDCASE;
2、示例
-- 删除存储过程DROPPROCEDUREIFEXISTS adjust_salary;-- 创建存储过程DELIMITER $$
CREATEPROCEDURE adjust_salary(IN emp_id INT,IN rating CHAR(1))BEGINCASE ratingWHEN'A'THENUPDATE employees SET salary = salary +1WHERE id = emp_id;WHEN'B'THENUPDATE employees SET salary = salary *1.05WHERE id = emp_id;ELSEUPDATE employees SET salary = salary *1.02WHERE id = emp_id;ENDCASE;END $$
DELIMITER;-- 调用存储过程call adjust_salary(1,'A');