-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、3 つの個別のステートメントではなく、1 つのステートメントが必要ですIF。現状では、v_salが 100 万を超える場合、3 つの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 に答える