【发布时间】:2016-07-21 05:35:39
【问题描述】:
我在 oracle 中创建了一个函数,但是在编译过程中抛出了错误。
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;
在编译函数时出现以下错误
错误(7,1):PL/SQL:语句被忽略 错误(7,1):PLS-00363:表达式“I_VALUE”不能用作分配目标
【问题讨论】:
标签: oracle function plsqldeveloper