zoukankan      html  css  js  c++  java
  • SQL Server数据库存储过程的异常处理

     

    SQL Server数据库存储过程异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间。本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的,接下来就让我们来一起了解一下这部分内容吧。

    1、环境

    数据库为SQL Server 2008,表的结构为:

    No char(10)  primary key

    Name varchar(20)

    Comment varchar(50)

    2、存储过程

    就以插入数据为例,其他的可以照着写就行了。

    编程语言都有异常的捕获与处理,在 SqlServer2008 中也是这样子的。

    对会出现异常的语句加上 begin try……end try ,然后进行异常捕捉:begin catch……end catch即可。

    错误代码详解很容易就能找到。

    代码如下:

    1. Create proc sp_Insert_Course  
    2. @No char(10),  
    3. @Name varchar(20),  
    4. @Comment varchar(50),  
    5. @rtn int output  
    6. as  
    7. begin try  
    8. insert into Course values(@No,@Name,@Comment)  
    9. set @rtn=
    10. end try  
    11. begin catch  
    12. set @rtn=@@ERROR 

    --辅助信息

    1. select ERROR_LINE() as Line,  
    2. ERROR_MESSAGE() as message1,  
    3. ERROR_NUMBER() as number,  
    4. ERROR_PROCEDURE() as proc1,  
    5. ERROR_SEVERITY() as severity,  
    6. ERROR_STATE() as state1  
    7. end catch 

    3、存储过程执行

    相关代码如下:

    1. declare  
    2. @rtn int  
    3. exec sp_Insert_Course '114','语文','',@rtn output  
    4. print @rtn 

    执行结果:

    正常的情况下,返回值为1,如果已经存在编号为“114”的数据,就会返回 ERROR_CODE:2627,其他的异常情况会返回相应的代码。

    4、说明

    如果程序有异常,把异常代码返回,然后再进行相关的处理即可。

    SQL Server中的异常处理和别的数据库(如Oracle)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。 

    关于SQL Server数据库存储过程的异常处理的知识就介绍到这里了,希望本次的介绍能够对您有所帮助。

  • 相关阅读:
    [iOS]UIDynamicAnimator动画
    [iOS]被忽略的main函数
    [iOS]app的生命周期
    vue 封装http请求时错误信息提示使用element-ui message,只提示一次
    angular8 Vue 导出excel文件
    python3 tornado api + angular8 + nginx 跨域问题
    ubutu tornado python3.7.5 nginx supervisor 部署web api
    angular cli 反向代理实现跨域
    angular8自定义管道、指令以及获取dom值
    angular cli 使用echarts
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/5542309.html
Copyright © 2011-2022 走看看