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

栏目:技术文章 发布时间:2026-03-02 09:24

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

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

1、环境

数据库为Sql Server2008。 表(Course)结构为: No char(10) primary key Name varchar(20) Comment varchar(50)

2、存储过程

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

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

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

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

代码如下:

Create proc sp_Insert_Course     @No char(10),     @Name varchar(20),     @Comment varchar(50),     @rtn int output as     begin try         insert into Course values(@No,@Name,@Comment)         set @rtn=1     end try     begin catch         set @rtn=@@ERROR                  --辅助信息         --select ERROR_LINE() as Line,         --    ERROR_MESSAGE() as message1,         --    ERROR_NUMBER() as number,         --    ERROR_PROCEDURE() as proc1,         --    ERROR_SEVERITY() as severity,         --    ERROR_STATE() as state1     end catch 

3、存储过程执行

相关代码如下:

declare     @rtn int exec sp_Insert_Course '114','语文','',@rtn output print @rtn 

执行结果:

正常的情况下,返回值为1,

假如已经存在编号为“114”的数据,就会返回 ERROR_CODE:2627,

其他的异常情况会返回相应的代码

4、说明

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

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

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

原文链接:http://www.cnblogs.com/sshoub/archive/2011/08/12/2136267.html