使用SQLDeveloper编写PL/SQL程序块,采用游标方式,调整scott.emp表中雇员信息的基本工资(字段名SAL)。如果该员工薪资小于等于2500,则在原基本工资基础上增加20%的薪资;如果该员工的薪资大于2500,则取消加薪。编写以上程序,输出每位员工的编号、姓名,加薪是否成功,如果加薪成功,输出加薪前和加薪后的工资;如果加薪失败,则输出原工资。
时间: 2024-03-25 08:36:38 浏览: 53
好的,以下是PL/SQL程序块的代码:
```
DECLARE
empno scott.emp.empno%TYPE;
ename scott.emp.ename%TYPE;
sal scott.emp.sal%TYPE;
new_sal scott.emp.sal%TYPE;
cursor emp_cursor is select empno, ename, sal from scott.emp;
BEGIN
for emp_rec in emp_cursor loop
empno := emp_rec.empno;
ename := emp_rec.ename;
sal := emp_rec.sal;
if sal <= 2500 then
new_sal := sal * 1.2;
else
new_sal := sal;
end if;
UPDATE scott.emp SET sal = new_sal WHERE empno = emp_rec.empno;
if SQL%ROWCOUNT = 1 then
dbms_output.put_line('员工编号:' || empno || ',姓名:' || ename || ',加薪成功,加薪前工资:' || sal || ',加薪后工资:' || new_sal);
else
dbms_output.put_line('员工编号:' || empno || ',姓名:' || ename || ',加薪失败,工资:' || sal);
end if;
end loop;
COMMIT;
END;
```
代码解释:
首先定义了需要用到的变量:员工编号(empno)、员工姓名(ename)、员工原始工资(sal)以及计算后的新工资(new_sal)。
然后使用游标(emp_cursor)从scott.emp表中查询所有员工信息,并且对每个员工进行加薪判断和计算,如果加薪成功,则更新scott.emp表中的工资信息,并输出员工的编号、姓名、加薪前后的工资情况;如果加薪失败,则直接输出员工的编号、姓名和原始工资。
最后提交事务,完成操作。
注意:在SQL Developer中需要打开dbms_output窗口才能看到程序输出的结果。