標籤:
https://msdn.microsoft.com/zh-cn/library/ms178600.aspx
返回傳生錯誤的行號,該錯誤導致運行 TRY…CATCH 構造的 CATCH 塊。
文法 ERROR_LINE ( )
傳回值
當在 CATCH 塊中調用時:
如果在 CATCH 塊範圍以外調用,則返回 NULL。
樣本
A.在 CATCH 塊中使用 ERROR_LINE
下面的程式碼範例顯示產生被零除錯誤的 SELECT 語句。 返回傳生錯誤的行號。
1. BEGIN TRY2. -- Generate a divide-by-zero error.3. SELECT 1/0;END TRYBEGIN 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_ExampleProcAS SELECT 1/0;GOBEGIN TRY -- Execute the stored procedure inside the TRY block. EXECUTE usp_ExampleProc;END TRYBEGIN 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 TRYBEGIN 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 錯誤行號