网络编程
位置:首页>> 网络编程>> 数据库>> 在SQL Server 2005数据库中进行错误捕捉(3)

在SQL Server 2005数据库中进行错误捕捉(3)

作者:Blithe  发布时间:2008-12-02 14:39:00 

标签:

SQL Server 2005数据库中错误捕捉的新功能

虽然在以前的SQL Server版本中可以通过一些技巧实现错误捕捉,但有时需要增加一些额外的开销,如在p1中使用了SELECT语句。庆幸的是在SQL Server2005中提供了和大多数编程语言类似的try...catch错误捕捉功能,从而使Transact-SQL第一次可以真正地进行错误捕捉。使用try...catch可以将p1的下半部分改写为如下形式。



ELSE
BEGIN
BEGIN TRY
INSERT INTO table1 VALUES(@Num, 'p')  
COMMIT TRANSACTION
RETURN 0
END TRY
BEGIN CATCH
RAISERROR('table1中已经存在%d了。', 16, 1, @Num)
ROLLBACK TRANSACTION
RETURN 2
END CATCH
END

我们可以发现,这个改写的部分未使用SELECT查询table1中是否已经有了某条记录,而是通过数据库的约束来进行判断的。如果键值冲突,就产生了错误,这样SQL语句就直接跳到BEGIN CATCH中执行错误处理代码。这样做效率要比上一个版本高得多,而且如果将RAISERROR去掉,p1就不会抛出任何错误,只是返回了一个错误码,这种做法的好处是有利于客户端代码进行处理。

如果使用SQL Server 2005数据库,在Transact-SQL中进行错误捕捉,建议尽量使用try...catch,因为它会捕捉到未预料到的错误,并且会使Transact-SQL更易于维护。当然,这样做就无法将Transact-SQL移植到SQL Server2000或更低的版本上运行,如果想写通用的Transact-SQL,读者可以使用传统的方法来捕捉错误。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com