Udostępnij za pomocą


ERROR_LINE (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza 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)