Полагаю, вам нужен один IF
оператор, а не три отдельных IF
оператора. На самом деле, если v_sal
больше 1 миллиона, все три оператора IF
будут оцениваться как TRUE
, поэтому конечным результатом всегда будет то, что в конечном счете IF
в конечном итоге будет рассчитан налог.
CREATE OR REPLACE FUNCTION tax_func (p_sal IN NUMBER)
RETURN NUMBER
IS
tax NUMBER := 0;
v_tsal NUMBER := 0;
v_sal NUMBER;
BEGIN
v_sal := p_sal * 12;
IF v_sal > 1000000
THEN
v_tsal := v_sal - 1000000;
tax := (v_sal * 0.3);
v_sal := v_sal - v_tsal;
ELSIF v_sal > 500000
THEN
v_tsal := v_sal - 500000;
tax := (v_sal * 0.2);
v_sal := v_sal - v_tsal;
ELSIF v_sal > 200000
THEN
v_tsal := v_sal - 200000;
tax := tax + (v_sal * 0.1);
END IF;
RETURN tax;
END;
/