说说SQL Server存储过程中的异常处理

发表于:2011-8-26 10:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Shoubin(cnblogs)    来源:51Testing软件测试网采编

  编程的异常处理很重要,当然Sql语句中存储过程的异常处理也很重要,明确的异常提示能够快速的找到问题的根源,节省很多时间。

  下面,我就以一个插入数据为例来说明Sql Server中的存储过程怎么捕获异常的 。

  1、环境

  1)数据库为Sql Server2008。

  2)表(Course)结构为:

  ● 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=1 
  10.     end try 
  11.     begin catch 
  12.         set @rtn=@@ERROR 
  13.          
  14.         --辅助信息 
  15.         --select ERROR_LINE() as Line, 
  16.         --    ERROR_MESSAGE() as message1, 
  17.         --    ERROR_NUMBER() as number, 
  18.         --    ERROR_PROCEDURE() as proc1, 
  19.         --    ERROR_SEVERITY() as severity, 
  20.         --    ERROR_STATE() as state1 
  21.     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)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。

  希望能够对大家有所帮助。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号