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.