PLS-00341: declaration of cursor 'CURSOR_NAME' is incomplete or malformed 오류는 불완전하거나, 미완성이거나, 잘못된 방법으로 커서를 선언하였을 때에 발생합니다.
설명을 이렇게 포괄적으로 해드린 것처럼, 발생 원인을 한 가지로 확정하여 안내해 드리기 어려운 오류이기도 합니다. PLS-00341 오류 주변의 라인과 컬럼을 확인하시면 동반하는 다른 오류를 확인할 수 있을 것입니다. 해당 오류에 의해 연쇄적으로 오류가 발생하였을 가능성이 높으니, 해당 부분을 공략하시면 해결할 수 있을 것입니다.
참고로, 다음 예제는 존재하지 않는 테이블에 대해 커서를 선언하여 PLS-00341: declaration of cursor 'CURSOR_NAME' is incomplete or malformed 오류가 발생하는 것을 보여드리고 있습니다.
CREATE OR REPLACE PROCEDURE PROCEDURE_NAME
IS
CURSOR CURSOR_NAME
IS
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME FROM EMPLOYEES;
EMP_REC CURSOR_NAME%ROWTYPE;
BEGIN
NULL;
EXCEPTION
WHEN OTHERS
THEN
--Warning: compiled but with compilation errors
--PLS-00341: declaration of cursor 'CURSOR_NAME' is incomplete or malformed
DBMS_OUTPUT.PUT_LINE ('Error: ' || SQLERRM);
END;
/