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 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

在 TRY 块中,我们正在计算 252/0 的结果
SET @Result = @Number / 10;
众所周知,上面的语句会引发错误,因此 CATCH 块中的语句将被执行。