개발 & 데이터베이스/ORACLE

오라클 ORA-06533: 첨자가 개수를 넘었습니다.

K.두부 2023. 1. 30. 23:22
반응형

오라클 프로시저, 함수를 호출할 때 주로 발생하는 에러로 프로시저 혹은 함수 내에서 Array (배열) 변수를 사용할 때, 주어진 크기를 넘어섰을 경우에 발생한다.

 

DECLARE

TYPE ARR_A IS TABLE OF VARCHAR2(5);

ARR_B ARR_A;

BEGIN
    ARR_B := ARR_A('A', 'B', 'C', 'D', 'E');
    
    // 맨 마지막 요소 2개 삭제
    ARR_B.TRIM(2);
    
    DBMS_OUTPUT.PUT_LINE(ARR_B(1)); // A
    DBMS_OUTPUT.PUT_LINE(ARR_B(2)); // B
    DBMS_OUTPUT.PUT_LINE(ARR_B(3)); // C
    DBMS_OUTPUT.PUT_LINE(ARR_B(4)); // 삭제된 데이터 (D) <오류 발생>
    
EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
    DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    
END;

 

초기 배열에 5개의 인자값을 넣은 후에 맨 마지막 인자값 2개를 삭제했으므로 3개의 인자값만 남아있다. 하지만 DBMS_OUTPUT.PUT_LINE()으로 해당 배열의 없는 인자값을 호출했으므로 ORA-06533 오류가 발생한다.

또한 배열을 선언했을 때 크기를 넘어서 인자값을 넣는 경우에도 발생하므로 주의해야한다.

반응형