create PROCEDURE hr.adjust_salary (IN empid INTEGER, IN rating INTEGER, OUT msg VARchar(128)) DYNAMIC RESULT SETS 1 MODIFIES SQL DATA DETERMINISTIC LANGUAGE SQL main: BEGIN DECLARE SQLSTATE char(5) DEFAULT ’00000’; DECLARE SQLCODE INTEGER DEFAULT 0; DECLARE not_found CONDITION FOR SQLSTATE ’02000’; DECLARE c1 CURSOR WITH RETURN FOR select * FROM hr.employees; error_handler: BEGIN DECLARE EXIT HANDLER FOR not_found SIGNAL SQLSTATE ’20000’ SET MESSAGE_TEXT = ’Employee ID not found’; work: BEGIN ATOMIC IF (rating = 1) THEN update hr.employees SET salary = salary * 1.10 where emp_id = empid; ELSEIF (rating = 2) THEN update hr.employees SET salary = salary * 1.05 where emp_id = empid; ELSEIF (rating = 3) THEN update hr.employees SET salary = salary * 1.03 where emp_id = empid; ELSE update hr.employees SET put_on_plan = ’Y’ where emp_id = empid; END IF; SET msg = ’updated record for employee with ID = ’ || char(empid); END work; END error_handler; OPEN c1; END main
添加新评论0 条评论