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| SQLEXCEP

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 specifiedstatementexecutes.statementcan be a simple statement such asvar_name=value,or a compound statement written usingand

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;">;

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱xwei067@foxmail.com我们将及时予以处理。

Copygight © 2017-2023 https://www.0746zz.com All Rights Reserved.永州站长网

站长:xwei067#foxmail.com(请把#换成@)

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息