-2

我已经编写了一个代码来查找税收,但它现在适用于 10 lac 以上的收入,请帮助我`在此处输入代码

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;
/
4

1 回答 1

0

我的猜测是你想要一个IF声明而不是三个单独的IF声明。就目前而言,如果v_sal大于 100 万,则所有三个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;
/
于 2012-03-19T05:27:18.513 回答