优化五在执行insert语句之后 。要用mysql中自带的@error_count参数来判断插入数据是否成功 。方便开发人员跟踪执行结果 。如果该参数的值不为0 。表示插入失败 。那么我们就用一个返回参数值来表示操作失败 。修改之后的存储过程如下:
dropprocedureifexistspr_dealtestnum;delimiter//createprocedurepr_dealtestnum(inp_boxnumbervarchar(30),outp_resultint--0-succ,other-fail)pr_dealtestnum_label:begindeclarep_usertypeint;declarep_datacountint;selectcount(*)intop_datacountfromtb_testnum_tmpwhereboxnumber=p_boxnumber;ifp_datacount>0thenbeginselectusertypeintop_usertypefromtb_testnum_tmpwhereboxnumber=p_boxnumber;end;elsebeginsetp_result=1;leavepr_dealtestnum_label;end;endif;selectcount(*)intop_datacountfromtb_testnumwhereboxnumber=p_boxnumber;ifp_datacount=0thenbegininsertintotb_testnum(boxnumber,usertype)values(p_boxnumber,p_usertype);if@error_count<>0thenbeginsetp_result=3;end;elsebeginsetp_result=0;end;endif;end;elsebeginsetp_result=2;end;endif;leavepr_dealtestnum_label;end;//delimiter;select'createprocedurepr_dealtestnumok';总结从上面可以看出 。一个短短的存储过程 。就有这么多需要优化的地方 。看来存储过程的编写也不是一件很简单的事情 。平时在编写代码(不仅仅是存储过程)的时候 。一定要从功能、可读性、性能等多方面来考虑 。这样才能够写出优美的、具备较长生命周期的存储过程 。
推荐阅读
- 你认为最经典的影片或明星有哪些?
- 你认为华语男歌手实力前十排名是什么样的?
- 世界上最受好评的电影?
- pornhub怎么上 pornhub正确的登入打开教程
- 你们心中十大中国男歌手有哪些?为什么是他们?
- 各位大神们:你们觉得近30年来,哪十部电影可以封神?
- 玉镯子怎么鉴定好坏,玉镯子的保养方法
- 你认为最能代表中国大陆的男、女歌手分别是谁?
- 精彩纷呈的老电影是美好的回忆,您能说出六部以上老电影的名称吗?