The IF statement selects an execution path based on the evaluation of a condition.
Group privileges are not considered because this statement cannot be dynamically prepared.
>>-IF--search-condition--THEN--| SQL-routine-statement |--------> .---------------------------------------------------------------. V | >----+-----------------------------------------------------------+-+--> '-ELSEIF--search-condition--THEN--| SQL-routine-statement |-' >--+---------------------------------+--END IF----------------->< '-ELSE--| SQL-routine-statement |-' SQL-routine-statement .----------------------------. V | |--+---SQL-procedure-statement--;-+----+------------------------| | .-------------------------------. | | V | | '---| SQL-function-statement |--;-+-'
The following SQL procedure accepts two IN parameters: an employee number employee_number and an employee rating rating. Depending on the value of rating, the employee table is updated with new values in the salary and bonus columns.
CREATE PROCEDURE UPDATE_SALARY_IF
(IN employee_number CHAR(6), INOUT rating SMALLINT)
LANGUAGE SQL
BEGIN
DECLARE not_found CONDITION FOR SQLSTATE '02000';
DECLARE EXIT HANDLER FOR not_found
SET rating = -1;
IF rating = 1
THEN UPDATE employee
SET salary = salary * 1.10, bonus = 1000
WHERE empno = employee_number;
ELSEIF rating = 2
THEN UPDATE employee
SET salary = salary * 1.05, bonus = 500
WHERE empno = employee_number;
ELSE UPDATE employee
SET salary = salary * 1.03, bonus = 0
WHERE empno = employee_number;
END IF;
END