私は、社員が部門のAVG給与をより多く稼ぐと、画面に印刷する簡単なケースをコーディングしています。しかし、私は2人の従業員の給与を確認したいときに1つの結果しか表示されない理由を理解できません。あなたが私の質問を理解することを願っていますありがとう。PLSQLでCASE文が正しくありません。
SET SERVEROUTPUT ON
DECLARE
v_emp121_sal employees.salary%TYPE;
v_emp121_lname employees.last_name%TYPE;
v_emp139_sal employees.salary%TYPE;
v_emp139_lname employees.last_name%TYPE;
v_avgsal employees.salary%TYPE;
BEGIN
SELECT salary, last_name
INTO v_emp121_sal, v_emp121_lname
FROM employees
WHERE employee_id = 121;
DBMS_OUTPUT.PUT_LINE('EMPLOYEE 121 SALARY IS: ' || v_emp121_sal);
SELECT salary, last_name
INTO v_emp139_sal, v_emp139_lname
FROM employees
WHERE employee_id = 139;
DBMS_OUTPUT.PUT_LINE('EMPLOYEE 139 SALARY IS: ' || v_emp139_sal);
SELECT AVG(salary)
INTO v_avgsal
FROM employees
WHERE department_id = 50;
DBMS_OUTPUT.PUT_LINE('DEPARTMENT 50 AVG SALARY IS: ' ||
TRUNC(v_avgsal, 0));
CASE
WHEN
v_emp121_sal < v_avgsal THEN
DBMS_OUTPUT.PUT_LINE('SALARY OF EMP ' || v_emp121_lname ||
' IS LESS THAN DEPARTMENT AVG');
WHEN
v_emp121_sal > v_avgsal THEN
DBMS_OUTPUT.PUT_LINE('SALARY OF EMP ' || v_emp121_lname ||
' IS HIGHER THAN AVG DEPARTMENT');
WHEN
v_emp139_sal < v_avgsal THEN
DBMS_OUTPUT.PUT_LINE('SALARY OF EMP ' || v_emp139_lname ||
' IS LESS THAN DEPARTMENT AVG');
WHEN
v_emp139_sal > v_avgsal THEN
DBMS_OUTPUT.PUT_LINE('SALARY OF EMP ' || v_emp139_lname ||
' IS HIGHER THAN AVG DEPARTMENT');
END CASE;
END;
/
理論、私は画面 に受け取るべき "EMP FRIPPの給与はAVG DEPARTMENTより高い"
salary NUMBER(8,2) – Rattlesnake
'rattlesnake' ..ここにあなたの作業コードを投稿することができます。参照先 – XING