[转载]【存储过程】异常处理 – Shoubin – 博客园.
在前一篇博客中,江南听雨 提出存储过程中的异常处理。 借此写一点关于存储过程的东西。
还是以例子为主要内容。有不合适的地方请大家指出。
我使用的是SQLServer2008,所举的例子也是在这个环境下进行了。
1、表结构(Course)
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
执行结果:
如果程序有异常,把异常代码返回,然后再进行相关的处理即可。
SQL Server中的异常处理和别的数据库(如Oracle)的有点差异,但是基本思想差不多,都是在最后捕获异常。
希望能够对大家有所帮助。