首页 > 代码库 > 错误处理

错误处理

SQL Server提供了在T-SQL 代码中用于处理错误的工具。进行错误处理的主要工具是一种称为TRY...CATCH的结构,它是在SQL Server 2005中引入的。SQL Server 也提供了一组函数,调用它们可以获得有关错误的信息。

当使用 TRY...CATCH结构时,通常是把T-SQL 代码放在TRY块中(放在BEGIN TRY 和END TRY关键字之间),而把错误处理代码放在紧接其后的CATCH 块中(放在BEGIN CATCH 和END CATCH关键字之间)。如果TRY 块中的代码没有错误,SQL Server 就会简单地忽略CATCH 块。如果TRY 块发生了错误,流程控制就会转移到相应的CATCH块。注意,如果TRY...CATCH块捕获并处理了错误,则对于调用者来说,它不会看到有错误发生。

BEGIN TRY

  PRINT ‘ No error‘;

END TRY

BEGIN CATCH

  PRINT ‘Error‘;

END CATCH

通常,在CATCH 块中进行的错误处理会涉及检查导致错误的原因,采取某种处理操作。SQL Server可以通过一组函数来反馈有关错误的信息。ERROR_NUMBER 函数将返回一个整数,代表错误的错误号,这可能算是最重要的一个错误函数。CATCH 块通常包含一些流程控制代码,通过检查错误号来决定应该采取什么处理操作。ERROR_MESSAGE 函数将返回错误的消息文本。要得到错误号和错误消息的列表,可以查询sys.messages目录视图。ERROR_SEVERITY 和ERROR_STATE 函数可以分别返回错误的严重级别和状态号。ERROR_LINE函数可以返回发生错误的行号。最后,ERROR_PROCEDURE 函数可以返回发生错误的存储过程或触发器的名称;如果在过程中没有发生错误,则返回NULL。