加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql 异常处理实例

发布时间:2020-12-11 23:55:56 所属栏目:MySql教程 来源:网络整理
导读:1. 语法: div class="cnblogs_code" condition_value handler_action: span style="color: #0000ff;"CONTINUE span style="color: #808080;"| span style="color: #0000ff;"EXIT span style="color: #808080;"| span style="color: #000000;" UNDO conditio

1. 语法:

<div class="cnblogs_code">

 condition_value handler_action:
<span style="color: #0000ff;">CONTINUE

<span style="color: #808080;">|
<span style="color: #0000ff;">EXIT

<span style="color: #808080;">|
<span style="color: #000000;"> UNDO

condition_value:
mysql_error_code
<span style="color: #808080;">| SQLSTATE <span style="color: #ff0000;">[<span style="color: #ff0000;">VALUE<span style="color: #ff0000;">]<span style="color: #000000;"> sqlstate_value
<span style="color: #808080;">|<span style="color: #000000;"> condition_name
<span style="color: #808080;">|<span style="color: #000000;"> SQLWARNING
<span style="color: #808080;">| <span style="color: #808080;">NOT<span style="color: #000000;"> FOUND
<span style="color: #808080;">| SQLEXCEPTION

?If one of these conditions occurs,the specified?statement?executes.?statement?can be a simple statement such as?var_name?=?value,or a compound statement written using??and?

http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html

2. 实例

实例1:

COMMENT COMMENT INNODB CHARSETUTF8 COMMENT

<span style="color: #0000ff;">DROP <span style="color: #0000ff;">PROCEDURE <span style="color: #0000ff;">IF <span style="color: #808080;">EXISTS<span style="color: #000000;"> sp_do_insert;
<span style="color: #0000ff;">CREATE <span style="color: #0000ff;">PROCEDURE<span style="color: #000000;"> sp_do_insert(
<span style="color: #808080;">IN in_param1 <span style="color: #0000ff;">int<span style="color: #000000;">,<span style="color: #808080;">IN in_param2 <span style="color: #0000ff;">int<span style="color: #000000;">,OUT out_status <span style="color: #0000ff;">tinyint<span style="color: #000000;">
)
<span style="color: #0000ff;">BEGIN
<span style="color: #0000ff;">DECLARE <span style="color: #0000ff;">CONTINUE HANDLER <span style="color: #0000ff;">FOR <span style="color: #800000; font-weight: bold;">1062 <span style="color: #0000ff;">SET out_status <span style="color: #808080;">= <span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">;

<span style="color: #0000ff;">SET out_status <span style="color: #808080;">= <span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">;

<span style="color: #0000ff;">INSERT <span style="color: #0000ff;">INTO<span style="color: #000000;"> tb1(field1,field2)
<span style="color: #0000ff;">VALUES<span style="color: #000000;"> (in_param1,in_param2);
<span style="color: #0000ff;">IF out_status<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">1 <span style="color: #0000ff;">THEN
<span style="color: #0000ff;">select<span style="color: #000000;"> in_param1,in_param2;
<span style="color: #0000ff;">END <span style="color: #0000ff;">IF<span style="color: #000000;">;
<span style="color: #0000ff;">END<span style="color: #000000;">;

CALL sp_do_insert(<span style="color: #800000; font-weight: bold;">2,<span style="color: #800000; font-weight: bold;">200,<span style="color: #008000;">@out<span style="color: #000000;">);
<span style="color: #0000ff;">SELECT <span style="color: #008000;">@out;

实例2:begin 。。。end块异常处理

<span style="color: #0000ff;">CREATE <span style="color: #0000ff;">TABLE<span style="color: #000000;"> tb1(

field1 <span style="color: #0000ff;">INT <span style="color: #808080;">NOT <span style="color: #0000ff;">NULL COMMENT <span style="color: #ff0000;">'<span style="color: #ff0000;">id<span style="color: #ff0000;">'<span style="color: #000000;">,<span style="color: #0000ff;">PRIMARY <span style="color: #0000ff;">KEY<span style="color: #000000;">(field1)

)ENGINE<span style="color: #808080;">=INNODB <span style="color: #0000ff;">DEFAULT CHARSET<span style="color: #808080;">=UTF8 COMMENT <span style="color: #808080;">=<span style="color: #ff0000;">'<span style="color: #ff0000;">临时测试表<span style="color: #ff0000;">'

<span style="color: #0000ff;">DROP <span style="color: #0000ff;">PROCEDURE <span style="color: #0000ff;">IF <span style="color: #808080;">EXISTS<span style="color: #000000;"> sp_do_insert;

<span style="color: #0000ff;">CREATE <span style="color: #0000ff;">PROCEDURE<span style="color: #000000;"> sp_do_insert(

<span style="color: #808080;">IN in_param1 <span style="color: #0000ff;">int<span style="color: #000000;">,<span style="color: #808080;">IN in_param3 <span style="color: #0000ff;">int<span style="color: #000000;">,<span style="color: #808080;">IN in_param4 <span style="color: #0000ff;">int<span style="color: #000000;">,OUT out_status1 <span style="color: #0000ff;">tinyint<span style="color: #000000;">,OUT out_status2 <span style="color: #0000ff;">tinyint<span style="color: #000000;">

)

<span style="color: #0000ff;">BEGIN

     <span style="color: #0000ff;"&gt;BEGIN</span>

<span style="color: #0000ff;">DECLARE <span style="color: #0000ff;">CONTINUE HANDLER <span style="color: #0000ff;">FOR <span style="color: #800000; font-weight: bold;">1062 <span style="color: #0000ff;">SET out_status1 <span style="color: #808080;">= <span style="color: #800000; font-weight: bold;">1<span style="color: #000000;">;

<span style="color: #0000ff;">SET out_status1 <span style="color: #808080;">= <span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">;

<span style="color: #0000ff;">INSERT <span style="color: #0000ff;">INTO tb1(field1,field2)<span style="color: #0000ff;">VALUES<span style="color: #000000;"> (in_param1,in_param2);

<span style="color: #0000ff;">IF out_status1<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">1 <span style="color: #0000ff;">THEN

    <span style="color: #0000ff;"&gt;select</span><span style="color: #000000;"&gt; in_param1,in_param2;

                                 </span><span style="color: #0000ff;"&gt;select</span> <span style="color: #ff0000;"&gt;'</span><span style="color: #ff0000;"&gt;1062--------11</span><span style="color: #ff0000;"&gt;'</span> <span style="color: #0000ff;"&gt;AS</span> <span style="color: #ff0000;"&gt;'</span><span style="color: #ff0000;"&gt;first result</span><span style="color: #ff0000;"&gt;'</span><span style="color: #000000;"&gt;;

<span style="color: #0000ff;">END <span style="color: #0000ff;">IF<span style="color: #000000;">;

<span style="color: #0000ff;">END<span style="color: #000000;">;

     </span><span style="color: #0000ff;"&gt;BEGIN</span>

     <span style="color: #0000ff;"&gt;DECLARE</span> <span style="color: #0000ff;"&gt;CONTINUE</span> HANDLER <span style="color: #0000ff;"&gt;FOR</span> <span style="color: #800000; font-weight: bold;"&gt;1062</span> <span style="color: #0000ff;"&gt;SET</span> out_status2 <span style="color: #808080;"&gt;=</span> <span style="color: #800000; font-weight: bold;"&gt;1</span><span style="color: #000000;"&gt;;

<span style="color: #0000ff;">SET out_status2 <span style="color: #808080;">= <span style="color: #800000; font-weight: bold;">0<span style="color: #000000;">;

<span style="color: #0000ff;">INSERT <span style="color: #0000ff;">INTO tb1(field1,field2)<span style="color: #0000ff;">VALUES<span style="color: #000000;"> (in_param3,in_param4);

<span style="color: #0000ff;">IF out_status2<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">1 <span style="color: #0000ff;">THEN

    <span style="color: #0000ff;"&gt;select</span><span style="color: #000000;"&gt; in_param3,in_param4;

                                 </span><span style="color: #0000ff;"&gt;select</span> <span style="color: #ff0000;"&gt;'</span><span style="color: #ff0000;"&gt;1062--------22</span><span style="color: #ff0000;"&gt;'</span> <span style="color: #0000ff;"&gt;AS</span> <span style="color: #ff0000;"&gt;'</span><span style="color: #ff0000;"&gt;secord result</span><span style="color: #ff0000;"&gt;'</span><span style="color: #000000;"&gt;;

<span style="color: #0000ff;">END <span style="color: #0000ff;">IF<span style="color: #000000;">;

     </span><span style="color: #0000ff;"&gt;END</span><span style="color: #000000;"&gt;;

<span style="color: #0000ff;">END<span style="color: #000000;">;

CALL sp_do_insert(<span style="color: #800000; font-weight: bold;">1,<span style="color: #800000; font-weight: bold;">100,<span style="color: #800000; font-weight: bold;">2,<span style="color: #008000;">@out1,<span style="color: #008000;">@out2<span style="color: #000000;">);

<span style="color: #0000ff;">SELECT <span style="color: #008000;">@out1,<span style="color: #008000;">@out2<span style="color: #000000;">;

<span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from tb1;

3. server error code

http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html?

常见errorcode

    ?Error:??SQLSTATE:??()

    Message: Result consisted of more than one row

  • ?Error:??SQLSTATE:??()

    Message: Duplicate entry '%s' for key %d

    ?Error:??SQLSTATE:??()

    Message: No data - zero rows fetched,selected,or processed

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读