###语法html
DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement
###解释mysql
当发生 condition_value
的时候,执行 statement
语句,而后触发 handler_action
动做。sql
###参数code
handler_action:server
condition_value:htm
mysql_error_code事件
mysql错误码,如1051,全部的错误码均可以在这里找到 错误码大全事务
SQLSTATE [VALUE]get
sql语句状态码,一样能够在 错误码大全 这里找到it
condition_name
事先声明的条件名称,详细请参考 DECLARE ... CONDITION
SQLWARNING
匹配全部以 01 开头的 SQLSTATE
NOT FOUND
匹配全部以 02 开头的 SQLSTATE ,常和游标CURSOR结合,当获取不到下一条数据的时候会触发
SQLEXCEPTION
全部不是以 '00', '01', 或 '02' 开头的 SQLSTATE,基本表示sql错误,事务回滚能够利用这个事件。
若是触发SQLEXCEPTION,但没有相应的action,那么默认调用 EXIT 若是触发 SQLWARNING ,则至关于执行 CONTINUE action NOT FOUND若是是正常触发,那么至关于CONTINUE,不然EXIT
事务控制
DECLARE t_error INT DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1 ; START TRANSACTION; //执行若干sql... IF t_error = 1 THEN ROLLBACK; END IF; COMMIT;
结束游标遍历
DECLARE v_username VARCHAR(100) DEFAULT ''; DECLARE rs CURSOR FOR SELECT `username` FROM `user`; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done = 1; OPEN rs; REPEAT FETCH rs INTO v_username; UNTIL _done END REPEAT;