-- including OR REPLACE is more convenient when updating a subprogram
CREATE OR REPLACE PROCEDURE Award_bonus
(emp_id NUMBER,
bonus NUMBER)
AS
commission REAL;
comm_missing EXCEPTION;
BEGIN -- executable part starts here
SELECT commission_pct / 100
INTO commission
FROM employees
WHERE employee_id = emp_id;
IF commission IS NULL THEN
RAISE comm_missing;
ELSE
UPDATE employees
SET salary = salary + bonus * commission
WHERE employee_id = emp_id;
END IF;
EXCEPTION -- exception-handling part starts here
WHEN comm_missing THEN
dbms_output.Put_line('This employee does not receive a commission.');
commission := 0;
WHEN OTHERS THEN
NULL; -- for other exceptions do nothing
END award_bonus;
/
CALL award_bonus(150, 400);
Creating a Stored Subprogram
0 comments:
Post a Comment