SW/Database / / 2025. 1. 29. 18:06

ORA-06531: Reference to uninitialized collection / 원인과 해결 방법

반응형

ORA-06531: Reference to uninitialized collection

ORA-06531 오류는 PL/SQL에서 컬렉션 변수를 초기화하지 않고 사용하려고 할 때 발생합니다.

 

 

ORA-06531: Reference to uninitialized collection / 원인과 해결 방법

 

 

오류 원인

ORA-06531 오류의 주요 원인은 다음과 같습니다:

  1. 컬렉션 변수가 초기화되지 않음: PL/SQL에서 `VARRAY` 또는 `NESTED TABLE` 변수를 선언했지만 `EXTEND` 또는 `CONSTRUCTOR`를 사용하여 초기화하지 않은 경우.
  2. NULL 상태의 컬렉션 사용: 컬렉션 변수가 `NULL` 상태로 남아있는데 요소에 접근하려고 시도한 경우.
  3. 컬렉션 초기화 없이 인덱싱: `TABLE_TYPE(index) := value;` 와 같이 초기화 없이 값을 할당하려 할 때.

해결 방법

ORA-06531 오류를 해결하기 위해 다음 단계를 수행하세요:

  1. 컬렉션 변수를 초기화: `EXTEND` 또는 `CONSTRUCTOR`를 사용하여 컬렉션을 초기화해야 합니다.
    DECLARE
      TYPE num_table IS TABLE OF NUMBER;
      numbers num_table;
    BEGIN
      numbers := num_table(); -- 컬렉션 초기화
      numbers.EXTEND;  -- 크기 확장
      numbers(1) := 100; -- 값 할당
    END;
    
  2. 컬렉션이 NULL인지 확인: 컬렉션을 사용하기 전에 `IS NULL`을 확인합니다.
    IF numbers IS NULL THEN
      numbers := num_table();
    END IF;
    
  3. 컬렉션 생성자를 활용: 초기 값을 설정하는 생성자를 사용하여 선언 즉시 초기화할 수 있습니다.
    DECLARE
      TYPE num_table IS TABLE OF NUMBER;
      numbers num_table := num_table(10, 20, 30); -- 생성자로 초기화
    BEGIN
      DBMS_OUTPUT.PUT_LINE(numbers(1)); -- 정상 출력
    END;
    

간단 요약

  • ORA-06531 오류는 초기화되지 않은 컬렉션을 참조할 때 발생합니다.
  • 해결 방법: `EXTEND` 또는 생성자를 사용하여 컬렉션을 초기화한 후 접근해야 합니다.
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유