SQL 错误行

SQL ERROR LINE 是 SQL 系统函数之一,它将返回发生错误的行号。此 ERROR LINE 函数在 TRY CATCH 块的范围内工作。

例如,我们在 TRY 块中编写了一系列语句。如果服务器发现错误,那么 CATCH 块中的 SQL ERROR_LINE() 将执行并返回发生错误的相应行号。ERROR LINE 对于调试问题非常有用。SQL Server 中 Error_Line 的基本语法是

ERROR_LINE()

SQL 错误行示例

在此示例中,我们将展示如何使用 Error_Line 函数返回发生错误的行号。

BEGIN TRY
    DECLARE @Number tinyint,
	    @Result tinyint;
    SET @Number = 252;
    SET @Result = @Number + 10;
SELECT @Number AS Number, 
       @Result AS Result;
END TRY
BEGIN CATCH
  PRINT N'Error Line = ' + CAST(ERROR_LINE() AS nvarchar(100));
  PRINT N'Error Message = ' + CAST(ERROR_MESSAGE() AS nvarchar(100));
END CATCH
SQL ERROR LINE Example 1

首先,我们声明了两个 SQL Server tinyint 变量

DECLARE @Number tinyint, 
         @Result tinyint;

接下来,我们将 252 赋值给 @Number 变量,然后将 10 添加到该变量中,结果将变成 262。

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

众所周知,tinyint 存储从 0 到 255 的数字,这意味着溢出。因此,它将退出 TRY 块,并执行我们 CATCH 块中的语句。我们使用了 ERROR_MESSAGE 函数来显示错误描述。

PRINT N'Error Line = ' + CAST(ERROR_LINE() AS nvarchar(100)); 
PRINT N'Error Message = ' + CAST(ERROR_MESSAGE() AS nvarchar(100));

错误行示例 2

在这个 SQL 错误行示例中,我们将查找整数 / 0 的结果。

BEGIN TRY
    DECLARE @Number int,
	    @Result int;
    SET @Number = 252;
    SET @Result = @Number / 0;
SELECT @Number AS Number, 
       @Result AS Result;
END TRY
BEGIN CATCH
  PRINT N'Error Line = ' + CAST(ERROR_LINE() AS nvarchar(100));
  PRINT N'Error Message = ' + CAST(ERROR_MESSAGE() AS nvarchar(100));
END CATCH
SQL ERROR LINE Example 2

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

SET @Result = @Number / 10;

众所周知,上面的语句会引发错误,因此 CATCH 块中的语句将被执行。