ERROR_LINE (Transact-SQL)
Zwraca numer wiersza, w którym wystąpił błąd, który spowodował CATCH blok TRY…CATCH konstrukcja ma zostać uruchomione.
Składnia
ERROR_LINE ( )
Zwracany typ
int
Wartość zwracana
Po wywołaniu w blokCATCH:
Zwraca numer wiersza, w którym wystąpił błąd.
Zwraca numer wiersza procedura, jeśli wystąpił błąd w ramach procedura składowana lub wyzwalacza.
Zwraca wartość NULL, jeśli o nazwie poza zakres blokCATCH.
Uwagi
Ta funkcja może zostać wywołana gdziekolwiek w zakres połowu blok.
ERROR_LINE zwraca numer wiersza, w którym wystąpił błąd, niezależnie od liczby godzin jest nazywany lub w przypadku gdy jest ona wywoływana w zakres blokCATCH.Kontrastuje to z funkcji, takich jak @@ błędów, które zwraca numer błędu w instrukcja następujący bezpośrednio po powodujący błąd lub pierwsza instrukcja CATCH blok.
W zagnieżdżone bloki CATCH ERROR_LINE zwraca numer wiersza błąd określonego blok CATCH, w której jest odwołanie do zakres .Na przykład, połowu blok TRY…Konstrukcja CATCH może zawierać zagnieżdżone TRY…CATCH konstrukcji.Zagnieżdżone połowu blokERROR_LINE zwraca numer wiersza dla błędu, która wywołała CATCH zagnieżdżonego blok.Jeśli ERROR_LINE jest uruchamiana w zewnętrznej połowu blok, zwraca numer wiersza dla błędu, która wywołała blokCATCH.
Przykłady
A.Za pomocą ERROR_LINE w blokCATCH
Następujący kod ilustruje przykład SELECT instrukcja , która generuje błąd dzielenia przez zero.Zwracany jest numer wiersza, w którym wystąpił błąd.
USE AdventureWorks2008R2;
GO
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B.Za pomocą ERROR_LINE w blok CATCH z procedura składowana
Poniższy przykład kodu pokazuje wygeneruje błąd dzielenia przez zero procedura składowana .ERROR_LINEZwraca numer wiersza w procedura składowana , w której wystąpił błąd.
-- 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
C.Za pomocą ERROR_LINE w blok CATCH inne narzędzia do obsługi błędów
Następujący kod ilustruje przykład SELECT instrukcja , która generuje błąd dzielenia przez zero.Wraz z numer wiersza, w którym wystąpił błąd zwracane są informacje, który odnosi się do błędu.
USE AdventureWorks2008R2;
GO
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
Zobacz także