2022-06-23 10:29:24 版本 : SQL Server数据库存储过程的异常处理 - Avatarx - 博客园
作者: 周杨 于 2022年06月23日 发布在分类 / 计算机应用 / 数据库 / SQLSERVER 下,并于 2022年06月23日 编辑
 历史版本

备注 修改日期 修改人
CREAT 2022-06-23 10:29:24[当前版本] 系统管理员


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

1.环境

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


create table 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)的有点差异,但是基本思想差不多, 在最后捕获都可以得到异常。


历史版本-目录  [回到顶端]
    知识分享平台 -V 5.1.4 -大信谛威