エラーは end ステートメントで発生しているようですが、私の人生ではそれが何であるかを知ることはできませんが、それはばかげたものになると確信しています。
CREATE OR REPLACE FUNCTION Calculate_Bonus(p_salary IN NUMBER, p_startdate IN DATE)
RETURN NUMBER IS
v_years_service NUMBER;
BEGIN
v_years_service := TRUNC(Months_Between(SYSDATE, v_startdate) /12);
IF (v_years_service <2) THEN
p_bonus := v_salary * 0.02;
ELSE
IF (v_year_service >=2) THEN
p_bonus := v_salary * 0.04;
ELSE
p_bonus := v_salary * 0.05;
RETURN p_bonus;
END IF;
END Calculate_Bonus;
/
show err