본문 바로가기
Oracle/운영

DBMS_LOB.SUBSTR 사용시 ORA-06502 발생원인

by 취미툰 2024. 5. 22.
반응형

 

LOB데이터의 데이터를 원하는 만큼 잘라주는 SUBSTR 함수 사용시 아래 에러가 발생하였습니다.

 

ORA-06502: PL/SQL: numeric or value error string

 

한글에러는 수치 또는 값 오류. 문자열 버퍼가 너무 작습니다.라는 에러였습니다.

 

관련해서 자료를 찾아서 정리합니다.

 

사용법은 아래와 같습니다.

dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte );

여기서 2번째 컬럼인 for_how_many_bytes의 자리에 넣는 숫자의 에러였습니다.

 

값의 return시에 dbms_output의 제한에 의해서 발생하는것입니다.

클라이언트의 최대버퍼사이즈를 키우거나 pl/sql로 처리되게 하거나, 4000bytes씩 잘라서 가져오게 하면 될거같습니다.

 

일반적인 쿼리로 쓰면 4000bytes가 최대입니다. 하지만 pl/sql 변수로 처리하면 32767bytes (32k) 까지 지원가능합니다.

 

 

출처 : https://asktom.oracle.com/ords/f?p=100:11:0::NO::P11_QUESTION_ID:367980988799

 

Converting CLOBS TO VARCHAR - Ask TOM

Converting CLOBS TO VARCHAR Surrinder Singh, March 16, 2001 - 7:02 am UTC Extremely useful all the documentation that refered to LOB conversions in the ORACLE Docs , and that stated that the dbms_lob.substr should be returned into a RWS(32767), not a LONG

asktom.oracle.com

 

반응형

댓글