안녕하세요
PL/SQL 짜다가 FOR IN문 안에 쿼리에서 EXCEPTION 발생시에 어디서 EXCEPTION을 선언하는게 궁금해서 질문남깁니다.
예시코드) FOR v_loop IN ( SELECT 1 AS NO , (SELECT A FROM T1) AS A /* 여기에서 두건이상이 조회되는 에러 */ FROM DUAL ) LOOP END LOOP;
이런구조일떄 FOR IN 문 에 SELECT 쿼리에서 에러가 나는 경우
EXCEPTION은 어디에 선언해야 하나요?
LOOP 안에 BEGIN EXCEPTION END; 문을 추가하면 될까요?
PL/SQL 은 블럭 단위로 묶을 수 있고, 블럭은 다른 블럭을 포함할 수 있습니다.
PL/SQL 블럭은 (DECLARE, BEGIN, EXCEPTION, END) 이렇게 한 묶음으로 구성됩니다.
DECLARE, EXCEPTION 은 생략 가능, BEGIN, END 는 필수.
LOOP 문 안에 작은 단위의 PL/SQL 블럭을 사용할 수는 있습니다.
그런데 질문의 구조를 보아하니 LOOP 문 안에서 나는 에러가 아니네요?
LOOP 문 쿼리 자체에서 나는 에러네요.
LOOP 문을 감싸는 BEGIN ~ END 를 사용해야 하고, 이 때 건단위로 에러를 잡지는 못합니다.