问题: 根据以下条件编写一个PL/SQL块,给每个员工提高薪水: 另存为q3.sql不需要测试脚本。 •员工人数少于1000人可以提高6% •员工人数在1000人以上且3000人以下人数增加8% •员工人数大于3000人增加12% 每次增加时,使用dbms_output打印消息“,你刚刚得到了百分之n的提升,你的新薪水是”。当所有加注完成后,回滚交易并打印信息,“他,他,他......只是在开玩笑!”跳过一条记录并使用以前的记录数据
它做了正确的计算,并且没有返回任何错误,虽然它正在对上一条记录进行计算,然后跳过下一条记录。
SET SERVEROUTPUT ON
DECLARE
CURSOR sal_cursor IS
SELECT ename, sal
FROM EMP
FOR UPDATE OF sal NOWAIT;
V_sal emp.sal%TYPE;
V_ENAME EMP.Ename%TYPE;
BEGIN
FOR emp_record IN sal_cursor
LOOP
FETCH sal_cursor INTO V_Ename, V_Sal;
IF (V_SAL <= 1000) THEN
UPDATE emp
SET EMP.sal = (emp_record.sal * 1.06)
WHERE CURRENT OF sal_cursor;
v_sal := v_sal * 1.06;
ELSIF V_SAL > 1000 AND V_sal <= 3000 THEN
UPDATE emp
SET EMP.sal = (emp_record.sal * 1.08)
WHERE CURRENT OF sal_cursor;
v_sal := v_sal * 1.08;
ELSE
UPDATE emp
SET EMP.sal = (emp_record.sal * 1.12)
WHERE CURRENT OF sal_cursor;
v_sal := v_sal * 1.12;
END IF;
DBMS_OUTPUT.PUT_LINE(V_ENAME || ', you just got an n percent raise
and your new salary is ' || v_sal);
END LOOP;
DBMS_OUTPUT.PUT_LINE('He, he, he... just kidding!');
ROLLBACK;
END;