SQL Server 中的错误处理(一)

Sql server 2000 中的错误处理 Sql server 2000中所提供的是一种非结构化的错误处理,其主要方法是使用@@error 来取得之前最近的一条处理的返回值。0表示操作成功,非0值则表示操作失败,不同的非0值表示不同的错误。 @@error 使用不方便之处在于你必须在怀疑会出错的语句之后,立即将@@error 赋予能够长时间保存值的自定义变量,否则该值将随着下一条语句的执行而产生变化,无法反映你所关注语句的真实执行情况。返回上一语句所影响的行数的@@rowcount亦是如此。 于是我们想,如果执行某操作后需要同时返回@@error以及@rowcount,是否可以运用下列语句? <sql operation> SET @err = @@error SET @rc = @@rowcount 答案是否定的,问题在于第二句 “SET @rc = @@rowcount;”  返回的实为 “SET @err = @@error” 的执行结果(为0 — 该语句未影响任何一行) 而并非我们所希望得到的 <sql operation> 的属性。所以我们看出,单句赋值的SET是不能达到预期结果的。 不过在Sql server 2000中,我们还有一个work around: <sql operation> SELECT @err = @@error, @rc = @@rowcount – Error handling code [...]

Posted in: MS SQL Server by Longzhang Fu No Comments ,