반응형
ORA-06531: Reference to uninitialized collection
ORA-06531 오류는 PL/SQL에서 컬렉션 변수를 초기화하지 않고 사용하려고 할 때 발생합니다.
오류 원인
ORA-06531 오류의 주요 원인은 다음과 같습니다:
- 컬렉션 변수가 초기화되지 않음: PL/SQL에서 `VARRAY` 또는 `NESTED TABLE` 변수를 선언했지만 `EXTEND` 또는 `CONSTRUCTOR`를 사용하여 초기화하지 않은 경우.
- NULL 상태의 컬렉션 사용: 컬렉션 변수가 `NULL` 상태로 남아있는데 요소에 접근하려고 시도한 경우.
- 컬렉션 초기화 없이 인덱싱: `TABLE_TYPE(index) := value;` 와 같이 초기화 없이 값을 할당하려 할 때.
해결 방법
ORA-06531 오류를 해결하기 위해 다음 단계를 수행하세요:
- 컬렉션 변수를 초기화: `EXTEND` 또는 `CONSTRUCTOR`를 사용하여 컬렉션을 초기화해야 합니다.
DECLARE TYPE num_table IS TABLE OF NUMBER; numbers num_table; BEGIN numbers := num_table(); -- 컬렉션 초기화 numbers.EXTEND; -- 크기 확장 numbers(1) := 100; -- 값 할당 END;
- 컬렉션이 NULL인지 확인: 컬렉션을 사용하기 전에 `IS NULL`을 확인합니다.
IF numbers IS NULL THEN numbers := num_table(); END IF;
- 컬렉션 생성자를 활용: 초기 값을 설정하는 생성자를 사용하여 선언 즉시 초기화할 수 있습니다.
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` 또는 생성자를 사용하여 컬렉션을 초기화한 후 접근해야 합니다.
반응형
'SW > Database' 카테고리의 다른 글
ORA-16000: database open for read-only access / 원인과 해결 방법 (0) | 2025.01.30 |
---|---|
ORA-09817: Write to audit file failed / 원인과 해결 방법 (0) | 2025.01.30 |
ORA-04030: Out of process memory when trying to allocate / 원인과 해결 방법 (0) | 2025.01.29 |
ORA-01950: No privileges on tablespace / 원인과 해결 방법 (0) | 2025.01.29 |
ORA-01654: Unable to extend index by XXX in tablespace / 원인과 해결 방법 (0) | 2025.01.22 |