13.6.7.1 DECLARE ... CONDITION 구문
DECLARE
condition_name
CONDITION FORcondition_value
condition_value
:mysql_error_code
| SQLSTATE [VALUE]sqlstate_value
DECLARE ... CONDITION
문은 명명 된 오류 조건을 선언하고 특정 처리가 필요한 조건에 이름을 연결합니다. 이 이름은 이후 DECLARE ... HANDLER
문에서 참조 할 수 있습니다 ( 섹션 13.6.7.2 "DECLARE ... HANDLER 구문" 을 참조하십시오).
조건 선언은 커서 또는 핸들러 선언 앞에 지정해야합니다.
DECLARE ... CONDITION
의 condition_value
는 MySQL 에러 코드 (번호) 또는 SQLSTATE 값 (5 문자열 리터럴) 할 수 있습니다. MySQL 오류 코드 0 또는 '00'
로 시작하는 SQLSTATE 값은 오류 조건이 아닌 성공을 설명하기 위해 사용해서는 없습니다. MySQL 오류 코드 및 SQLSTATE 값의 목록은 섹션 B.3 "서버 오류 코드 및 메시지" 를 참조하십시오.
조건 이름을 사용하면 저장 프로그램 코드의 명확화에 도움이 될 수 있습니다. 예를 들어, 다음 핸들러는 존재하지 않는 테이블을 제거하려는 시도에 적용되지만, 그것은 분명한 것은 MySQL 에러 코드 1051의 의미를 알고있는 경우뿐입니다.
DECLARE CONTINUE HANDLER FOR 1051 BEGIN - body of handler END;
조건의 이름을 선언함으로써이 핸들러의 목적이 더 쉽게 알 수 있습니다.
DECLARE no_such_table CONDITION FOR 1051; DECLARE CONTINUE HANDLER FOR no_such_table BEGIN - body of handler END;
이것은 동일한 조건의 MySQL 오류 코드가 아닌 해당 SQLSTATE 값을 기준으로 명명 된 조건입니다.
DECLARE no_such_table CONDITION FOR SQLSTATE '42S02'; DECLARE CONTINUE HANDLER FOR no_such_table BEGIN - body of handler END;
SIGNAL
에서 참조되거나 RESIGNAL
문에서 사용되는 조건 이름은 MySQL 에러 코드가 아니라 SQLSTATE 값과 관련된해야합니다.