ORA-06533: Subscript beyond count 해결 방법

ORA-06533: Subscript beyond count 오류는 오라클 PL/SQL에서 배열을 사용하다가 가끔씩 접하는 오류입니다. ORA-06533 오류에 대해 알아보고 이를 해결하는 방법에 대해 알아보도록 하겠습니다.

ORA-06533 오류의 원인

ORA-06533 Subscript beyond count

ORA-06533 오류는 배열의 인덱스 범위를 초과하여 접근하려고 할 때 발생합니다. 다음과 같은 예제 자료를 참고로 하여 안내해드리겠습니다.

SET SERVEROUTPUT ON

DECLARE
   TYPE ARRAY_TYPE IS VARRAY (3) OF VARCHAR2 (10);

   ARRAY_NAME   ARRAY_TYPE := ARRAY_TYPE ('BEOM', 'SANG', 'HELLO');
BEGIN
   ARRAY_NAME.TRIM (1);
   --ORA-06533: Subscript beyond count
   ARRAY_NAME (3) := 'BEOMSANG';
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/

예제 코드를 살펴보면 ARRAY_NAME이라는 '3'의 크기를 가지는 배열을 생성하고, 초기값으로 ('BEOM', 'SANG', 'HELLO')를 설정하였습니다. 이때, 다음과 같은 작업을 수행하면 ORA-06533: Subscript beyond count 오류가 발생하게 된답니다.

  • ARRAY_NAME.TRIM (1); => TRIM 함수를 통해 배열의 마지막 요소 1개를 제거합니다. 이때 배열의 크기는 초기값 '3'에서 '2'로 변경됩니다. 이때 요소는 각각 첫 번째가 'BEOM', 두 번째가 'SANG'으로 남아있는 상태입니다. 기존에 있던 세 번째 요소 'HELLO'는 TRIM 함수로 인하여 삭제되었습니다.
  • ARRAY_NAME (3) := 'BEOMSANG'; => 배열의 세 번째 요소에 'BEOMSANG'을 할당하는 작업을 시도합니다. 배열의 크기가 현재 '2'이기 때문에 존재하지 않는 세 번째 인덱스에 접근을 시도하여 ORA-06533 오류가 발생합니다.

ORA-06533: Subscript beyond count 해결하기

이를 해결하기 위해서는 배열의 요소 개수와 접근하는 인덱스를 확인해야 합니다. 만약 배열의 크기를 동적으로 변경하거나 요소를 추가 및 제거하는 경우에는 이에 대한 처리를 해주어야 할 것입니다. 

결과적으로, ORA-06533 오류는 배열 요소에 접근할 때 해당 인덱스가 배열의 크기를 초과하는 경우에 발생하는 오류라고 할 수 있습니다. 이를 해결하기 위해서는 배열의 크기와 요소에 대한 인덱스를 생각하며 작업해야 합니다.

댓글