SQL 错误消息

在 SQL Server 中,每个错误都有特定的错误消息。当服务器在查询执行期间识别出错误时,此函数将帮助我们获取该错误消息。此函数在 TRY CATCH 块的范围内工作。

例如,我们在 TRY 块中编写了一系列语句。如果 SQL Server 发现错误,那么 CATCH 块中的 ERROR_MESSAGE() 将被执行并返回相应的错误描述。

SQL 错误消息函数语法

ERROR_MESSAGE 函数不接受任何参数,并返回 NVARCHAR(4000) 作为输出。SQL Server 中 Error_Message 的语法是

ERROR_MESSAGE();

以下语句将返回错误消息(文本)和相应的错误编号。在这里,我们重点介绍了众所周知的服务器错误消息,即遇到的除零错误。

SELECT *
  FROM sys.messages
Available System Messages 0

错误消息示例

在此示例中,我们将向您展示如何使用 Sql Server Error_Message 函数返回错误消息。

BEGIN TRY
    DECLARE @Number smallint,
	    @Result smallint;
    SET @Number = 32760;
    SET @Result = @Number + 10;
SELECT @Number AS Number, 
       @Result AS Result;
END TRY
BEGIN CATCH
  PRINT N'Error Message = ' + ERROR_MESSAGE();
END CATCH
ERROR MESSAGE 2

首先,我们将 Number 变量赋值为 32,760,将 Result 变量赋值为 32,770。

SET @Number = 32760;
SET @Result = @Number + 10;

众所周知,smallint 存储的数字范围是 -32,768 到 32,767,这意味着溢出。因此,它将退出 TRY 块并执行我们 CATCH 块中的语句,即

 PRINT N'Error Message = ' + ERROR_MESSAGE();

ERROR_MESSAGE 示例 2

在此示例中,我们将计算 1/0 的结果。

BEGIN TRY
	SELECT 1/0 AS Result;
END TRY
BEGIN CATCH
	SELECT ERROR_MESSAGE() AS [Error Message];
END CATCH
ERROR MESSAGE 3

在 TRY 块中,我们正在计算 1/0 的结果。

SELECT 1/0 AS Result;

我们都知道上面指定的语句会引发错误。因此,CATCH 块中的 error_message 语句(即下面的语句)将被执行。

SELECT ERROR_MESSAGE() AS [Error Message];