본문 바로가기

프로그래밍/3. ORACLE

프로그램에서 오라클프로시저 호출할때 ORA-06502 오류가 발생할 경우

반응형

C#에서 오라클 프로시저를 호출하는데

ORA-06502: PL/SQL: numeric or value error: character string buffer too small 오류가 발생했다.

 

 

 

일반적으로 ORA-06502 오류는 변수의 사이즈보다 큰 값을 할당했을때 발생하는 오류로

해당 변수의 크기를 늘려주면 해결된다. VARCHAR2(20) -> VARCHAR2(40)으로 바꾸면 해결되는데

 

이번에는 SQLPLUS 에서 해당 프로시저를 호출했을때는 아무 문제가 없었고, 구글 검색을 해봐도 앞서 말한것처럼 변수의 크기를 늘려야한다는 말이 전부였다.

 

어떤 문제인지 감이 안와서 이리저리 테스해보다가 혹시나 하는 마음에 다른부분을 전부 주석처리하고 리턴값에 강제로 값을 할당했는데도 동일한 문제가 발생했다.

 

아무래도 C# 소스에 문제인거 같아서 소스를 분석한 결과  몇번의 삽질 끝에 해결!

 

해결방법은 의외로 간단했는데,

프로시저에서 OUTPUT 파라메터를 지정할때 INPUT 파라미터를 지정할때와 다르게 버퍼 사이즈를 넉넉하게 지정해주니깐 해결됨

 

=> 문제의 코드 parameters.Add("p_ouput", OracleDbType.Varchar2).Direction = ParameterDirection.Output;

=> 해결된 코드 cmd.Parameters.Add("p_ouput", OracleDbType.Varchar2, 10 ).Direction = ParameterDirection.Output;

 

 

 

 

 

 

 

반응형