хочу написать запрос, чтобы найти налог в oracle.i написал его, но он не работает, пожалуйста, проверьте его и помогите мне - PullRequest
0 голосов
/ 19 марта 2012

Я написал код, чтобы найти налог, но теперь он работает для дохода выше 10 lac 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;
/

1 Ответ

0 голосов
/ 19 марта 2012

Полагаю, вам нужен один 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;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...