안녕하세요 ~
오라클 PL/SQL 에서 CURSOR의 SELECT 문장 및 BEGIN END 구문에 내용등을 작성하고
컴파일 했을 때, 오류가 안나고 정상 컴파일이 되는데, 실제 프로시저를 수행했을 때,
CURSOR 구문의 SELECT 절에 GROUP BY 표현식이 아니라서 에러가 뜹니다.
이 경우, 사용자가 CURSOR 절의 SELECT문이 에러가 뜬다는거를 인지를 못하고 PL/SQL만 컴파일이 정상적으로 되는 것을 확인한 경우, 문제가 발생될 수 있기 때문에, CURSOR 부문의 SELECT 를 수행할 때, 에러가 나면 예외처리를 하고 싶은데 방법이 있을까요?
CURSOR의 SELECT 절이 모두 정상적으로 수행된다는 가정 하에, BEGIN END 절에서 모두 커서의 데이터가 없거나, 오류 등에 대한 예외처리만 나와있고, 실제 CURSOR절을 수행할 때 SELECT가 에러나는 것에 대한 예외처리는 찾지 못하였네요.
애초에 PL/SQL 자체가 컴파일이 안되는게 맞는건지.. 모르겠네요
고수님들의 의견을 듣고 싶습니다.
PL/SQL 의 CURSOR의 문장이 실행될 때, 만약 SELECT 오류가 발생되면, 바로 예외처리를 하고 싶음 !!
컴파일이 정상이라는 것은
커서 선언에 대한 구문 오류는 아니고
커서 실행 시에 나는 오류인 듯 한데요.
커서 실행하는 부분을 begin ~ end 로 감싸서 예외처리 하시면 됩니다.
메인 블럭(begin ~ end) 안에 서브 블럭(begin ~ end) 가능
그런데.
질문을 다시 보면
GROUP BY 표현식이 아니라서 에러가 난다고 했는데.
이는 구문오류입니다. 실행시 오류가 아닙니다.
구문 오류는 컴파일 시에 에러가 납니다.