Ich habe eine Funktion in Oracle erstellt, aber es wirft den Fehler während der Kompilierung.Warum Ausdruck 'I_VALUE' kann nicht als Zuweisungsziel in Funktion
create or replace FUNCTION Get_Rounded_Value(i_Value NUMBER, i_Round_Type Varchar2, i_Round_Para NUMBER) RETURN number
DETERMINISTIC
IS
v_Final_Value NUMBER(22,4);
BEGIN
v_Final_Value := 0;
i_Value := NVL(i_Value,0);
if i_Round_Type = 'D' then
v_Final_Value := Trunc(i_Value,i_Round_Para);
elsif i_Round_Type = 'U' then
v_Final_Value := Ceil(i_Value * Power(10, i_Round_Para))/Power(10, i_Round_Para);
ELSIF i_Round_Type = 'R' then
v_Final_Value := Round(i_Value, i_Round_Para);
ELSIF i_Round_Type = 'A' then
v_Final_Value := Round(i_Value, i_Round_Para);
if abs(v_final_value - i_value) < 5 * power(10, (-1*i_Round_Para) - 1) then
v_Final_Value := v_Final_Value + 5 * power(10, (-1*i_Round_Para) - 1);
ELSIF abs(v_final_value - i_value) = 5 * power(10, (-1*i_Round_Para) - 1) then
v_Final_Value := v_Final_Value - 5 * power(10, (-1*i_Round_Para) - 1);
END IF;
ELSIF i_Round_Type = 'B' then
v_Final_Value := Ceil(i_Value * Power(10, i_Round_Para))/Power(10, i_Round_Para);
if abs(v_final_value - i_value) <= 5 * power(10, (-1*i_Round_Para) - 1) then
v_Final_Value := v_Final_Value - 5 * power(10, (-1*i_Round_Para) - 1);
END IF;
ELSIF i_Round_Type = 'C' then
v_Final_Value := Trunc(i_Value,i_Round_Para);
if abs(v_final_value - i_Value) >= 5 * power(10, (-1*i_Round_Para) - 1) then
v_Final_Value := v_Final_Value + 5 * power(10, (-1*i_Round_Para) - 1);
END IF;
end if;
Return NVL(v_Final_Value,0);
END;
Während der Kompilierung der Funktion ich habe die folgenden Fehler
Fehler (7,1): PL/SQL: Statement ignoriert Fehler (7,1): PLS-00363: expression ‚I_VALUE 'kann nicht als Zuweisungsziel verwendet werden