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

错误状态示例 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 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));