2012-03-19 2 views
-2

Я написал код, чтобы найти налог, но теперь он работает на доход выше 10 lac plss помочь мне out`enter кода здесьхочу написать запрос, чтобы найти налог в oracle.i написал его, но он не работает plss, проверьте его и помогите мне

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; 
    END IF; 
    IF v_sal > 500000 
    THEN 
     v_tsal := v_sal - 500000; 
     tax := (v_sal * 0.2); 
     v_sal := v_sal - v_tsal; 
    END IF; 
    IF v_sal > 200000 
    THEN 
     v_tsal := v_sal - 200000; 
     tax := tax + (v_sal * 0.1); 
    END IF; 
    RETURN tax; 
END; 
/
+2

Это поможет определить «не работает». Что вы ожидаете от вывода? Какой результат вы получаете? –

ответ

0

я предполагаю, что вы хотите один 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; 
/

 Смежные вопросы

  • Нет связанных вопросов^_^