0

ユーザーに目標​​売上と従業員 ID を入力するよう求める教育課題を完了しています。目標売上高が 2015 年の実際の会社の売上高を上回るか、同等である場合は、昇給を適用できます。

私は大部分のコードを作成しましたが、END IF で行き詰まっています。行 25 のステートメント。エラーが表示されます

ORA-06550、PLS-00103: 次のいずれかを予期しているときに、記号「WHERE」が見つかりました。

ユーザー入力を 2015 年の会社の売上と比較する if ステートメントを統合するのに苦労しているかもしれません。

洞察力は大歓迎です!ありがとうございました!

accept emp_target prompt 'Please enter your company sales target: '
accept empno prompt 'Please enter your employee ID: '
DECLARE
emp_target NUMBER := &emp_target; 
cmp_target NUMBER;
empno   emp_employees.emp_id%type := &empno;
new_sal emp_employees.salary%type;
cnt     number; 

CURSOR sales_cur IS 
    SELECT SUM(oe_orderDetails.quoted_price)
    FROM oe_orderDetails
    JOIN oe_orderHeaders
    ON oe_orderDetails.order_id = oe_orderHeaders.order_id
    WHERE oe_orderHeaders.order_date >= to_date('1.1.' || 2015, 'DD.MM.YYYY')
    and oe_orderHeaders.order_date < to_date('1.1.' || (2015 + 1), 'DD.MM.YYYY');

BEGIN
OPEN sales_cur;
FETCH sales_cur INTO cmp_target;
IF cmp_target >= emp_target THEN 
    UPDATE emp_employees SET
        emp_employees.salary = case WHEN emp_employees.dept_id = 10 THEN emp_employees.salary * 1.1
        WHEN emp_employees.emp_id = 145 THEN emp_employees.salary * 1.15
        WHEN emp_employees.dept_id = 80 THEN emp_employees.salary * 1.2
        ELSE emp_employees.salary
    END IF;

END

WHERE emp_employees.emp_id = empno
returning emp_employees.salary into new_sal;

cnt := sql%rowcount;

IF cnt > 0 THEN
    dbms_output.put_line('Employee ' || empno || ', new salary = ' || new_sal);
ELSE
dbms_output.put_line('Nobody got new salary');
END IF;
END;

/
4

1 に答える 1