행위

ORA-06502

DB CAFE

thumb_up 추천메뉴 바로가기


1 ORA-06502[편집]

"ORA-06502: PL/SQL: 수치 또는 값 오류: 문자열 버퍼가 너무 작습니다" 오류

2 에러 발생 원인[편집]

  • 프로시저 내에 선언된 변수에 어떤 값을 담으려고 할 때, 담으려고 하는 값의 크기가 선언된 변수의 크기보다 크다면 에러 발생
  • 원인은 함수에서 조회 된 컬럼의 크기보다 리턴하는 변수의 크기가 작기 때문

3 해결 방안[편집]

  • 문자열 길이를 원래값에 맞춰준다.
  • 예를 들어,
  • A라는 컬럼이 조회되었고 조회된 값은 변수 V_A에 입력되어 리턴된다.
SELECT A INTO V_A 
  FROM TABLE
  • 이 때 A의 크기는 VARCHAR2(15)이고 , 리턴되는 변수 V_A의 크기는 VARCHAR(10) 으로 정의가 되어있다면 해당 오류가 발생한다.
  • 해결 방안은 V_A의 크기를 VARCHAR(15)로 바꾼다.
  • 주로 PL/SQL에서 VARCHAR2(4000)를 4000바이트 이상으로 사용하고자 할때 발생
  • SQL에서는 VARCHAR2(4000) 까지 지원 , PL/SQL 에서 32K(32767 바이트) 까지 지원
  • CLOB DBMS_LOB.SUBSTR(CLOB컬럼, 4000, 1) 에러 발생시
  • DBMS_LOB.SUBSTR(CLOB컬럼, 10000, 1) 처럼 크기를 늘려서 사용