DECLARE HANDLER 문

DECLARE HANDLER 문

특정 조건이 발생했을 때 실행할 HPL/SQL 문장을 미리 정의해 두는 문이에요. 예를 들어 행이 더 없을 때(NOT FOUND) 넘어가는 처리를 등록해 두면, 커서 반복문을 안전하게 제어할 수 있습니다.

출처: 문서

본문

DECLARE HANDLER 문을 사용하면 조건이 발생했을 때 실행할 하나 이상의 HPL/SQL 문장을 정의할 수 있습니다.

구문:

DECLARE [CONTINUE | EXIT] HANDLER FOR 
  [SQLEXCEPTION | NOT FOUND | user_condition] code_block;

설명:

파라미터 설명
CONTINUE 핸들러가 완료되면 조건을 발생시킨 문장 바로 다음의 HPL/SQL 문장으로 제어가 돌아갑니다
EXIT 핸들러가 완료된 후 핸들러를 선언한 블록의 끝으로 제어가 이동합니다
code_block 지정된 조건이 발생했을 때 실행할 HPL/SQL 문장(들)

예제:

DECLARE name VARCHAR(100);
DECLARE no_rows INT DEFAULT 0; 

DECLARE CONTINUE HANDLER FOR NOT FOUND
  SET no_rows = 1;    

OPEN cur FOR 'SELECT name FROM db.orders';

FETCH cur INTO name;
WHILE no_rows = 0 THEN  
  PRINT id;
  FETCH cur INTO name;
END WHILE;
CLOSE cur;

호환성: IBM DB2, Teradata, MySQL.

더 알아보기 (Learn more)