码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server 错误行号

时间:2015-09-11 00:10:46      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:

https://msdn.microsoft.com/zh-cn/library/ms178600.aspx

返回发生错误的行号,该错误导致运行 TRY…CATCH 构造的 CATCH 块。

 
返回值

当在 CATCH 块中调用时:

  • 返回发生错误的行号。

  • 如果错误发生在存储过程或触发器中,则返回例程中的行号。

如果在 CATCH 块作用域以外调用,则返回 NULL。

 

示例

A.在 CATCH 块中使用 ERROR_LINE

下面的代码示例显示生成被零除错误的 SELECT 语句。 返回发生错误的行号。

1. BEGIN TRY
2.    -- Generate a divide-by-zero error.
3.    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO

 技术分享

begin try前面的空行也会计算在内,测试如下:

技术分享

B.带存储过程在 CATCH 块中使用 ERROR_LINE

下面的代码示例演示一个生成被零除错误的存储过程。 ERROR_LINE 返回发生错误的存储过程中的行号。

-- Verify that the stored procedure does not already exist.
IF OBJECT_ID ( ‘usp_ExampleProc‘, ‘P‘ ) IS NOT NULL 
    DROP PROCEDURE usp_ExampleProc;
GO

-- Create a stored procedure that 
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
    SELECT 1/0;
GO

BEGIN TRY
    -- Execute the stored procedure inside the TRY block.
    EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
    SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO

 结果显示行号是从GO之后开始计算

技术分享

C.带其他错误处理工具在 CATCH 块中使用 ERROR_LINE

下面的代码示例显示生成被零除错误的 SELECT 语句。 错误的相关信息与发生错误的行号一同返回。

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO

 结果如图:

技术分享

ERROR_LINE对我们调试定位查询错误的时候有很大的帮助。

 

SQL Server 错误行号

标签:

原文地址:http://www.cnblogs.com/qianlixing/p/4799455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!