###語法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;