Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Ta funkcja zwraca liczbę linii wystąpienia błędu, który spowodował blok CATCH w TRY... Konstrukcja CATCH do wykonania.
Transact-SQL konwencje składni
Składnia
ERROR_LINE ( )
Zwracany typ
int
Wartość zwracana
Gdy wywołamy w bloku CATCH, zwraca ERROR_LINE
- numer linii, w której wystąpił błąd
- numer linii w procedurze, jeśli błąd wystąpił w procedurze zapisanej lub wyzwalaczu
- NULL, jeśli wywołana jest poza zakresem bloku CATCH.
Uwagi
Wezwanie do ERROR_LINE może wystąpić w dowolnym miejscu w ramach bloku CATCH.
ERROR_LINE zwraca numer linii, na której wystąpił błąd. Dzieje się to niezależnie od lokalizacji wywołania ERROR_LINE w zakresie bloku CATCH oraz od liczby wywołań do ERROR_LINE. To kontrastuje z funkcjami, takimi jak @@ERROR. @@ERROR zwraca numer błędu w instrukcji bezpośrednio po tej, która powoduje błąd, lub w pierwszym pociągu bloku CATCH.
W zagnieżdżonych blokach CATCH zwraca ERROR_LINE numer linii błędu specyficzny dla zakresu bloku CATCH, do którego się odwołuje. Na przykład blok CATCH w TRY... Konstrukcja CATCH mogłaby zawierać zagnieżdżone TRY... Catch. W zagnieżdżonym bloku CATCH zwraca ERROR_LINE numer linii dla błędu, który wywołał zagnieżdżony blok CATCH. Jeśli ERROR_LINE działa w zewnętrznym bloku CATCH, zwraca numer linii dla błędu, który wywołał ten konkretny blok CATCH.
Przykłady
A. Wykorzystanie ERROR_LINE w bloku CATCH
Ten przykład kodu pokazuje SELECT polecenie generujące błąd dzielenie przez zero.
ERROR_LINE zwraca numer linii, w której wystąpił błąd.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
B. Wykorzystanie ERROR_LINE w bloku CATCH z procedurą przechowywaną
Ten przykład pokazuje procedurę przechowywaną, która generuje błąd dzielenie przez zero.
ERROR_LINE zwraca numer linii, 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. Wykorzystanie ERROR_LINE w bloku CATCH z innymi narzędziami do obsługi błędów
Ten przykład kodu pokazuje SELECT polecenie generujące błąd dzielenie przez zero.
ERROR_LINE zwraca numer linii, w której wystąpił błąd, oraz informacje dotyczące samego błędu.
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 też
TRY... CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
BŁĄD_PROCEDURY (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)