PLS-00364: loop index variable use is invalid 오류는 보통 루프 인덱스 변수와 관련한 다른 요인으로 인하여 해당 변수가 부적당 되었을 때에 발생합니다. 해당 오류를 발생한 예제를 살펴보고, 해결 방법에 대해 안내해드리겠습니다.
이번 예제는 의도적으로, 쿼리 내에서 존재하지 않는 컬럼을 참조하도록 하였으며, 루프 인덱스 변수가 부적당 하도록 해보겠습니다.
BEGIN
FOR F IN (SELECT COLUMN_NAME_NOT_EXISTS FROM TABLE_NAME)
LOOP
DBMS_OUTPUT.PUT_LINE (F.COLUMN_NAME_NOT_EXISTS);
END LOOP;
END;
/
ERROR at line 2:
ORA-06550: line 2, column 21:
PL/SQL: ORA-00904: "COLUMN_NAME_NOT_EXISTS": invalid identifier
ORA-06550: line 2, column 14:
PL/SQL: SQL Statement ignored
ORA-06550: line 4, column 29:
PLS-00364: loop index variable 'F' use is invalid
ORA-06550: line 4, column 7:
PL/SQL: Statement ignored
먼저, 루프 내의 쿼리는 'TABLE_NAME' 테이블에서 "COLUMN_NAME_NOT_EXISTS"라는 컬럼을 참조하도록 시도할 것입니다.
다만 루프 인덱스에서 존재하지 않는 컬럼 'COLUMN_NAME_NOT_EXISTS'에 대해 반복을 진행하도록 하였기 때문에 루프는 정상적으로 작동할 수 없습니다.
그로 인한 상태의 결과로써 'PLS-00364: loop index variable 'F' use is invalid' 오류가 발생하게 된답니다.
이를 해결하려면 쿼리 내의 컬럼 이름이 실제 테이블에 있는 컬럼과 일치하도록 확인하여야 합니다. 물론 이번 예제를 해결하기 위해 제시하는 방법이며, 실제 발생한 오류의 유형에 따라 처리 방법은 달리 할 것입니다. 확실한 것은 루프 인덱스와 연관된 객체의 오류로 인해 해당 루프 인덱스가 유효하지 않을 가능성이 높다는 것입니다.
BEGIN
FOR F IN (SELECT COLUMN_NAME FROM TABLE_NAME)
LOOP
DBMS_OUTPUT.PUT_LINE (F.COLUMN_NAME);
END LOOP;
END;
/
PL/SQL procedure successfully completed.
이것으로 PLS-00364: loop index variable use is invalid 오류를 해결하는 데 도움이 되기를 바랍니다~