了解SQL Server 2005中的新Try/Catch语句

开发者在线 Builder.com.cn 更新时间:2006-09-06作者:Builder 来源:

本文关键词: sqlserver

SQL Server 2005的以前版本很少提供错误处理的办法,Raiserror()是方法之一。SQL Server 2005增加了Try/Catch语句,它模仿Java及其它开发语言中的相似结构。

Try/Catch语句由两个块——Try块和Catch块——组成,每个块可包含几个语句。列表A是一个伪代码的简单实例。

如果插入或更新失败,隐式事务被退回。插入语言无法继续(即它出错)而更新语句失败。二者要么同步继续,要么一起失败。

注意:由Catch块捕获的错误不会返回给调用方。)

在SQL Server 2000中,任何毁灭性的错误(即严重程度大于17的错误)会立即中止执行并中断连接。而在SQL Server 2005中,引擎会试图处理错误并继续执行操作。列表B说明了这种情况。

将列表B中的代码粘贴到Management Studio中的一个新查询窗口中,然后执行这段代码,得到的结果如下:

Begin Try

Begin Catch

Variable @int = 0

Code Completed

Try块试图除以零,这一操作立即调用Catch块;它打印信息并将变量赋值为零。继续执行代码,打印最后两个语句。

应用Catch块中的内置函数

SQL Server 2005的Catch块中新增加了六个函数。下面简单说明各个函数:

  • Error_Message():返回一般提交给调用方的错误讯息。
  • Error_Number():返回赋予给错误的整数值。
  • Error_Severity():返回严重程度整数值。
  • Error_State():返回状态。
  • Error_Procedure():返回产生错误的进程或函数名称。
  • Error_Line():返回产生错误的行号。

为说明这些函数的用法,我对代码进行了修改,见列表C

用户评论

  • 用户名
  • 评论内容