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 TRYerror
PRINT ' No error';查询
END TRY存储过程
BEGIN CATCH消息
PRINT 'Error';错误
END CATCHmessage
一般,在CATCH 块中进行的错误处理会涉及检查致使错误的缘由,采起某种处理操做。SQL Server能够经过一组函数来反馈有关错误的信息。ERROR_NUMBER 函数将返回一个整数,表明错误的错误号,这可能算是最重要的一个错误函数。CATCH 块一般包含一些流程控制代码,经过检查错误号来决定应该采起什么处理操做。ERROR_MESSAGE 函数将返回错误的消息文本。要获得错误号和错误消息的列表,能够查询sys.messages目录视图。ERROR_SEVERITY 和ERROR_STATE 函数能够分别返回错误的严重级别和状态号。ERROR_LINE函数能够返回发生错误的行号。最后,ERROR_PROCEDURE 函数能够返回发生错误的存储过程或触发器的名称;若是在过程当中没有发生错误,则返回NULL。