問題: 根據以下條件編寫一個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;