2016-07-21 6 views
0

의 오라클에 함수를 작성했지만 컴파일 중에 오류를 발생시킵니다. PL/SQL : 문 무시 오류 (7,1) : PLS-00363 : 컴파일 나는 다음과 같은 오류를표현식 'I_VALUE'이 (가)

오류 (7,1)를 얻을 수있는 기능 동안

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; 

표현 'I_VALUE '는 할당 목표로 사용할 수 없습니다.

답변

3

OUT 또는 IN OUT으로 지정하지 않는 한 매개 변수가 입력됩니다.

전달 된 매개 변수를 변경하려고하는 함수를 사용하는 것은 좋지 않은 습관입니다. 이것이 일반적으로 절차의 목적입니다.

IN OUT 또는 OUT 매개 변수는 전달 된 상수/리터럴을 가질 수 없습니다. 그들은 정의에 따라 변수 여야합니다.