안녕하세요 ~
오라클 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 오류가 발생되면, 바로 예외처리를 하고 싶음 !!
답변 감사드립니다.
제가 구문 오류인지, 실행 오류인지 구분을 정확하게 하지 않은 것 같네요(질문당시 개념을 잘 몰랐음)
말씀대로, 프로시저 컴파일이 정상적으로 된 것으로 보아, 커서의 구문오류는 아닙니다.
다만 프로시저를 실행했을 때, 커서쪽의 SELECT 절에서 "인수의 갯수나 유형이 잘못되었습니다" 나온 부분을
제가 커서의 SELECT문을 별도로 SQL로 수행했을 때 나온 오류인 "GROUP BY 표현식이 아니다" 내용을 문제처럼 얘기했네요
어찌되었건, 결과적으로 구문 오류는 아니고, 실행 오류가 맞습니다!!
제가 A 질문을 하고 B의 오류 얘기를 해서.. 약간 질문을 제대로 하지 못하였는데..
BEGIN END 밖에 있는 커서 선언 부분을.. BEGIN END 안에 커서 선언을 할 수 있나요? (선언은 SELECT 절이 있는 CURSOR이고, 실행은 CUSROR를 오픈해서 사용하는 의미로 이해하고 있습니다.)
BEGIN END 안에서 커서를 오픈해서 사용할 때의 예외처리는 알고 있습니다.