在PL/SQL语句中使用游标,给员工加薪,部门10的加10%,部门20加20%,部门30加30% ,其余的加5%,编写PLSQL块, 打印出各部门员工的姓名,部门编号,工资,加薪后的工资;
时间: 2024-12-15 07:20:04 浏览: 7
在PL/SQL中,你可以使用游标(Cursor)遍历员工表,并根据部门编号应用相应的加薪比例。假设我们有一个名为`employees`的表,包含字段`employee_name`, `department_id`, 和 `salary`,下面是一个示例的PL/SQL块来完成这个任务:
```sql
DECLARE
CURSOR emp_cursor IS SELECT employee_name, department_id, salary FROM employees;
emp_rec employees%ROWTYPE; -- 定义一个记录变量
new_salary NUMBER;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_rec; -- 获取一行数据
EXIT WHEN emp_cursor%NOTFOUND; -- 当没有更多数据时退出循环
-- 根据部门ID计算加薪后的工资
CASE emp_rec.department_id
WHEN 10 THEN new_salary := emp_rec.salary * 1.10; -- 加10%
WHEN 20 THEN new_salary := emp_rec.salary * 1.20; -- 加20%
WHEN 30 THEN new_salary := emp_rec.salary * 1.30; -- 加30%
ELSE new_salary := emp_rec.salary * 1.05; -- 其余加5%
END CASE;
DBMS_OUTPUT.PUT_LINE('姓名: ' || emp_rec.employee_name
|| ', 部门: ' || emp_rec.department_id
|| ', 原工资: ' || emp_rec.salary
|| ', 新工资: ' || new_salary);
END LOOP;
CLOSE emp_cursor;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK; -- 如果发生错误,回滚事务
DBMS_OUTPUT.PUT_LINE ('Error: ' || SQLERRM);
END;
/
```
执行此PL/SQL块会打印出每个员工的原始信息及加薪后的工资。
阅读全文