SQL 错误状态

SQL 错误状态是 SQL 系统函数之一,用于返回错误(如果发生)的状态。此 SQL 错误状态函数在 CATCH 块的作用域内工作。如果您在 CATCH 块之外调用此函数,它将返回 NULL。

例如,我们在 TRY 块中编写了一系列语句。如果服务器遇到错误,则会在 CATCH 块内执行 SQL Server ERROR_STATE(),并返回一个整数值。SQL Server 中 Error_State 的基本语法如下所示。

ERROR_STATE()

SQL 错误状态示例

在此示例中,我们将向您展示如何使用 Error_State 函数查找错误严重性。

BEGIN TRY  
    SELECT 1/0  
END TRY  
BEGIN CATCH  
    SELECT ERROR_STATE() AS [Error State Result]  
END CATCH  
GO
SQL ERROR STATE 1

错误状态示例 2

这是演示 SQL Server Error_State 函数的另一个示例。

BEGIN TRY
    DECLARE @Number tinyint,
	        @Res tinyint;
    SET @Number = 252;
    SET @Res = @Number + 10;
SELECT @Number AS Number, 
       @Res AS Result;
END TRY
BEGIN CATCH
  PRINT N'Error State = ' + CAST(ERROR_STATE() AS VARCHAR(100));
  PRINT N'Error Message = ' + CAST(ERROR_MESSAGE() AS VARCHAR(100));
END CATCH
SQL ERROR STATE 2

在此 SQL Server 查询中,我们声明了两个 tinyint 变量。接下来,我们将 252 赋给 @Number 变量,然后在此变量中加 10,结果将变为 262(结果)。

SET @Number = 252; 
SET @Res = @Number + 10;

我们都知道 tinyint 包含 0 到 255 的数字,意味着溢出,因此它将退出 TRY 块,并执行我们 CATCH 块中的 Sql Server 错误状态语句。我们使用了 ERROR_MESSAGE 函数来显示错误描述。

PRINT N'Error State = ' + CAST(ERROR_STATE() AS VARCHAR(100)); 
PRINT N'Error Message = ' + CAST(ERROR_MESSAGE() AS VARCHAR(100));