用Oracle创建一个存储过程pro_updatesal,以员工号为参数,修改该员工的工资。若该员工属于10号部门,则工资增加150元;若属于20号部门,则工资增加200元;若属于30号部门,则工资增加250元;若属于其他部门,则工资增长300元。如果该员工不存在,则输出信息“there is no such an employees”
时间: 2024-02-22 08:58:54 浏览: 22
好的,以下是创建存储过程pro_updatesal的代码:
```sql
CREATE OR REPLACE PROCEDURE pro_updatesal (
empno IN NUMBER
) AS
sal_diff NUMBER(6,2);
BEGIN
-- 根据员工号查询员工所在部门
SELECT deptno
INTO sal_diff
FROM emp
WHERE empno = empno;
-- 根据部门号计算工资增长
CASE sal_diff
WHEN 10 THEN sal_diff := 150;
WHEN 20 THEN sal_diff := 200;
WHEN 30 THEN sal_diff := 250;
ELSE sal_diff := 300;
END CASE;
-- 更新员工工资
UPDATE emp
SET sal = sal + sal_diff
WHERE empno = empno;
-- 输出更新结果
IF SQL%ROWCOUNT = 0 THEN
DBMS_OUTPUT.PUT_LINE('there is no such an employees');
ELSE
DBMS_OUTPUT.PUT_LINE('salary updated successfully');
END IF;
END;
```
存储过程中使用了一个CASE语句,根据员工所在的部门号计算工资增长,并且使用了UPDATE语句更新员工的工资。最后,使用IF语句判断是否更新成功,并输出对应的信息。请注意,这只是一个简单的示例,具体实现可能需要根据实际情况进行调整。