我对 DBMS_OUTPUT.PUT_LINE 有问题,我制作了其中 2 个必须在工资更新前显示,一个在工资更新后显示,但它们都只显示更新,可能我做错了,请检查代码。
CREATE OR REPLACE PROCEDURE SET_SALARY (P_EMP_ID NUMBER , P_ADD_SAL NUMBER)
IS
V_NAME VARCHAR2(50) ;
V_SALARY NUMBER ;
V_MANG_NAME VARCHAR2(50);
V_MANG_SAL NUMBER ;
V_EMP_ID NUMBER ;
V_MNG_ID NUMBER ;
BEGIN
SELECT LAST_NAME , SALARY
INTO V_NAME , V_SALARY
FROM EMPLOYEES
WHERE EMPLOYEE_ID = P_EMP_ID ;
DBMS_OUTPUT.PUT_LINE (V_NAME || ' Before: '||V_SALARY ); <===(must show for select)
UPDATE EMPLOYEES
SET SALARY = SALARY + P_ADD_SAL
WHERE EMPLOYEE_ID = P_EMP_ID ;
DBMS_OUTPUT.PUT_LINE (V_NAME || ' After: '||V_SALARY ); <==(must show after update)
SELECT E.EMPLOYEE_ID , E.LAST_NAME, E.SALARY ,E.MANAGER_ID,M.LAST_NAME , M.SALARY
INTO V_EMP_ID, V_NAME , V_SALARY ,V_MNG_ID,V_MANG_NAME , V_MANG_SAL
FROM EMPLOYEES E , EMPLOYEES M
WHERE E.MANAGER_ID = M.EMPLOYEE_ID
AND E.EMPLOYEE_ID = P_EMP_ID ;
DBMS_OUTPUT.PUT_LINE (V_MANG_NAME || ' Before: '||V_MANG_SAL );<===(must show for select)
UPDATE EMPLOYEES
SET SALARY = SALARY + ( P_ADD_SAL / 2 )
WHERE EMPLOYEE_ID = V_MNG_ID ;
DBMS_OUTPUT.PUT_LINE (V_MANG_NAME || ' AFTER: '||V_MANG_SAL );<==(must show after update)
END ;