mysql 异常处理实例
1. 語法:
?
DECLARE handler_action HANDLERFOR condition_value [, condition_value] ...statementhandler_action:CONTINUE| EXIT| UNDOcondition_value:mysql_error_code| SQLSTATE [VALUE] sqlstate_value| condition_name| SQLWARNING| NOT FOUND| SQLEXCEPTION?If one of these conditions occurs, the specified?statement?executes.?statement?can be a simple statement such as?SETvar_name?=?value, or a compound statement written using?BEGIN?and?END.
http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html
2. 實(shí)例
實(shí)例1:
DROP TABLE IF EXISTS tb1; CREATE TABLE tb1( field1 INT NOT NULL COMMENT 'id', field2 INT COMMENT 'value', PRIMARY KEY(field1) )ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT ='臨時測試表'DROP PROCEDURE IF EXISTS sp_do_insert; CREATE PROCEDURE sp_do_insert(IN in_param1 int,IN in_param2 int,OUT out_status tinyint ) BEGINDECLARE CONTINUE HANDLER FOR 1062 SET out_status = 1;SET out_status = 0;INSERT INTO tb1(field1, field2)VALUES (in_param1, in_param2); IF out_status=1 THENselect in_param1, in_param2;END IF; END;CALL sp_do_insert(2,200,@out); SELECT @out;實(shí)例2:begin 。。。end塊異常處理
DROP TABLE IF EXISTS tb1;CREATE TABLE tb1(field1 INT NOT NULL COMMENT 'id',field2 INT COMMENT 'value',PRIMARY KEY(field1))ENGINE=INNODB DEFAULT CHARSET=UTF8 COMMENT ='臨時測試表'DROP PROCEDURE IF EXISTS sp_do_insert;CREATE PROCEDURE sp_do_insert(IN in_param1 int,IN in_param2 int,IN in_param3 int,IN in_param4 int,OUT out_status1 tinyint,OUT out_status2 tinyint)BEGINBEGINDECLARE CONTINUE HANDLER FOR 1062 SET out_status1 = 1;SET out_status1 = 0;INSERT INTO tb1(field1, field2)VALUES (in_param1, in_param2);IF out_status1=1 THENselect in_param1, in_param2;select '1062--------11' AS 'first result';END IF;END;BEGINDECLARE CONTINUE HANDLER FOR 1062 SET out_status2 = 1;SET out_status2 = 0;INSERT INTO tb1(field1, field2)VALUES (in_param3, in_param4);IF out_status2=1 THENselect in_param3, in_param4;select '1062--------22' AS 'secord result';END IF;END;END;CALL sp_do_insert(1,100,2,200,@out1,@out2);SELECT @out1,@out2;select * from tb1;?
3. server error code
http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html?
常見errorcode
-
?Error:?1172?SQLSTATE:?42000?(ER_TOO_MANY_ROWS)
Message: Result consisted of more than one row
-
?Error:?1062?SQLSTATE:?23000?(ER_DUP_ENTRY)
Message: Duplicate entry '%s' for key %d
-
?Error:?1329?SQLSTATE:?02000?(ER_SP_FETCH_NO_DATA)
Message: No data - zero rows fetched, selected, or processed
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/4155741.html
總結(jié)
以上是生活随笔為你收集整理的mysql 异常处理实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring beans源码解读之--B
- 下一篇: A different twist on