반응형
ORA-06533: 첨자가 개수를 넘었습니다.
ORA-06533: Subscript Beyond Count error
1. 현상
- 오류 모니터링 중 확인 되었고, 오라클 패키지 내 배열 사용 시 크기가 넘어가는 경우 발생하는 오류 였다.
2. 원인 분석
- PL/SQL 에서의 테이블은 오라클 SQL에서의 테이블과는 다르다.
PL/SQL에서의 테이블은 일종의 일차원 배열이라고 생각하면 이해하기 쉬울것이다.
테이블은 크기에 제한이 없으면 그 ROW의 수는 데이터가 들어옴에 따라 자동 증가 한다.
EX) 오류 발생 예제
DECLARE -- 중첩 테이블 선언 -- ex) CREATE OR REPLACE TYPE 타입명 IS TABLE OF 값타입; TYPE TABLE_1 IS TABLE OF VARCHAR2(10); -- 변수 선언 TEST_VAR TABLE_1; BEGIN -- 생성자를 사용해 값 할당 (크기는 5) TEST_VAR := TABLE_1('하나', '둘', '셋', '넷', '다섯'); -- 테이블을 변수로 선언도 가능. -- 맨 마지막부터 2개 요소 삭제 TEST_VAR.TRIM(2); DBMS_OUTPUT.PUT_LINE(TEST_VAR(1)); DBMS_OUTPUT.PUT_LINE(TEST_VAR(2)); DBMS_OUTPUT.PUT_LINE(TEST_VAR(3)); DBMS_OUTPUT.PUT_LINE(TEST_VAR(4)); -- 오류 발생, 해당 데이터 삭제 되었음. EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); DBMS_OUTPUT.PUT_LINE( DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); END; ======================= 출력 ==================== 하나 둘 셋 ORA-06533: 첨자가 개수를 넘었습니다 ORA-06512: 19행
3. 해결
컬렉션의 요소 개수보다 더 큰 첨자 값으로 참조한 경우 발생되는 예외 이다.
나와 같은 경우는 단순히 컬렉션 배열의 크기를 조절하여 해결 하였다.
반응형
'4. Database > 4_2 Error모음' 카테고리의 다른 글
[Oracle] ORA-01031 : insufficient privileges (1) | 2020.08.19 |
---|---|
[Oracle] ORA-06533: 첨자가 개수를 넘었습니다. (0) | 2019.06.22 |
[Oracle] ORA-31061: XDB 오류: special char to escaped char conversion failed. (0) | 2019.06.22 |
[Oracle] ORA-30926 : 원본 테이블의 고정 행 집합을 가져올 수 없습니다. (0) | 2017.12.19 |
[DB 에러] ORA-01653 테이블스페이스 확장 불가 (2) | 2017.05.24 |
댓글0