存储过程——异常捕获&打印异常信息
- 目录
shanzm-2020年5月13日
0. 背景说明
之前极其的抱怨使用存储过程,觉得存储过程不应该出现在现在的新项目中,
但是最近研究存储过程,发现存储过程的优点也是及其的耀眼!
之前只盯着存储过程的缺点,有点一叶障目了。
前一周自己摸索着写的存储过程,写的太幼稚了,不规范。
我们在存储过程中的事务中定义了一个临时变量@sum
,在事务的每一句sql语句后都@sum+@@error
,最后根据@sum
是否为0来判断是否有异常,
如果没有异常则@@error
为0,有异常则@@error
值为错误代码,即一定不为0
所以,可以通过最终的@sum判断是否有异常,
但是有一点要说明的是,@@error
对那种重大错误无法捕捉,而且@@error
只对其前一句sql语句生效
所以,建议还是使用TRY……CATCH
这里定义一个捕获异常的存储过程,实现将存储过程中出现的异常记录在数据库的异常信息表中。
本示例中,全部的存储过程都是在一个新建的测试数据库ShanTest数据库中进行的