日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 异常处理实例

發布時間:2025/4/5 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 實例

實例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;

實例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

?

?

?

?

?

轉載于:https://www.cnblogs.com/davidwang456/p/4155741.html

總結

以上是生活随笔為你收集整理的mysql 异常处理实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。