【发布时间】:2020-08-02 04:32:18
【问题描述】:
我必须将在 deptno 10 工作的员工的薪水增加 15%,Deptno 20 增加 15%,其他人增加 5%,并显示在该部门工作的相应员工。我能够增加部门 10 的薪水和 20 但我无法将其他部门的工资提高 5%。我也尝试过for循环。这是一个练习题。
我的问题是这样的:(显示 Dept 表中的所有记录。将在 deptno 10 工作的员工的薪水增加 15%,Deptno 20 增加 15%,其他人增加 5% 还显示相应的员工在那个部门工作。使用参数 Cursor 和 Cursor with Update 子句。)
我的代码:
declare
cursor sal_increase(v_dno number) is select empno,sal,ename,deptno from emp where deptno=v_dno ;
emp_record sal_increase%rowtype;
begin
OPEN sal_increase(10);
LOOP
FETCH sal_increase INTO emp_record;
EXIT WHEN sal_increase%NOTFOUND;
update emp set sal=sal+sal*0.15 where empno=emp_record.empno;
DBMS_OUTPUT.PUT_LINE(emp_record.ename||' '||emp_record.deptno);
END LOOP;
CLOSE sal_increase;
OPEN sal_increase(20);
LOOP
FETCH sal_increase INTO emp_record;
EXIT WHEN sal_increase%NOTFOUND;
update emp set sal=sal+sal*0.15 where empno=emp_record.empno;
DBMS_OUTPUT.PUT_LINE(emp_record.ename||' '||emp_record.deptno);
END LOOP;
CLOSE sal_increase;
end;
【问题讨论】:
-
这必须在 PL/SQL 中完成吗?我可以用纯 SQL 来做吗?
-
是的,它被指定使用 pl/sql 执行此操作。