使用SQLDeveloper编写PL/SQL程序块,采用游标方式,调整scott.emp表中雇员信息的基本工资(字段名SAL)。如果该员工薪资小于等于2500,则在原基本工资基础上增加20%的薪资;如果该员工的薪资大于2500,则取消加薪。编写以上程序,输出每位员工的编号、姓名,加薪是否成功,如果加薪成功,输出加薪前和加薪后的工资;如果加薪失败,则输出原工资。
时间: 2024-03-08 08:47:43 浏览: 143
PL/SQL Developer V14.0.5.1986 x86/x64 最新官方多语言注册版(含中文)2020.12.14官方更新
以下是实现上述需求的PL/SQL程序块:
```sql
DECLARE
CURSOR c_emp IS SELECT empno, ename, sal FROM scott.emp;
v_empno scott.emp.empno%TYPE;
v_ename scott.emp.ename%TYPE;
v_sal scott.emp.sal%TYPE;
v_new_sal scott.emp.sal%TYPE;
BEGIN
FOR emp_rec IN c_emp LOOP
v_empno := emp_rec.empno;
v_ename := emp_rec.ename;
v_sal := emp_rec.sal;
IF v_sal <= 2500 THEN
v_new_sal := v_sal * 1.2;
UPDATE scott.emp SET sal = v_new_sal WHERE empno = v_empno;
DBMS_OUTPUT.PUT_LINE(v_empno || ' ' || v_ename || ' 加薪成功,加薪前工资:' || v_sal || ',加薪后工资:' || v_new_sal);
ELSE
DBMS_OUTPUT.PUT_LINE(v_empno || ' ' || v_ename || ' 加薪失败,工资不变:' || v_sal);
END IF;
END LOOP;
COMMIT;
END;
/
```
程序中首先定义一个游标c_emp,查询scott.emp表中的所有员工信息。然后使用FOR循环遍历游标中的每一条记录,判断员工的薪资是否小于等于2500,如果是,则计算加薪后的工资并更新到表中,否则不做任何操作。在更新工资之前需要记录原始工资和员工编号、姓名等信息,并在更新后输出加薪前后的工资信息。最后需要提交事务。
阅读全文