ORA-06532 Subscript outside of limit 해결하기

ORA-06532: Subscript outside of limit 오류는 PL/SQL에서 발생하는 편입니다. 특히, PL/SQL 코드에서 배열 또는 컬렉션의 크기보다 작은 인덱스를 참조하려고 할 때 주로 발생합니다. 

ORA-06532 Subscript outside of limit

ORA-06532 오류는 앞에서 안내해드린 것처럼, 배열의 인덱스 범위를 확인하여 해결할 수 있습니다. 왜냐하면 배열 범위를 벗어나는 변수의 할당과 같은 작업을 시도하였기 때문입니다. PL/SQL에서 배열이나 컬렉션을 다룰 때에는 이러한 유효성 검사가 중요합니다.

다음은 ORA-06532: Subscript outside of limit 오류가 발생하는 PL/SQL 코드 예제입니다.

SET SERVEROUTPUT ON

DECLARE
   TYPE EMP_ARRAY IS TABLE OF EMP%ROWTYPE;

   EMPS   EMP_ARRAY := EMP_ARRAY ();
BEGIN
   EMPS.EXTEND (1);
   --ORA-06532: Subscript outside of limit
   EMPS (0).ENAME := 'BEOMSANG';
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/

이 예제에서 EMP_ARRAY는 1의 인덱스를 가지고 있습니다. 그리고 오라클 배열은 1부터 시작하여 배열의 크기만큼 인덱스로 접근이 가능합니다. 이때 0번 째 인덱스에 대해 값을 설정하려고 시도할 때에 오류가 발생합니다.

ORA-06532 오류를 해결하는 것뿐만 아니라, 발생의 회피를 위하여 배열이나 컬렉션에 대해 유효한 인덱스를 사용하는지 검증하도록 권장합니다.

댓글