ERROR_LINE (Transact-SQL)

Restituisce il numero di riga in cui si è verificato un errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY…CATCH.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ERROR_LINE ( )

Tipo restituito

int

Valore restituito

Quando chiamata in un blocco CATCH:

  • restituisce il numero della riga in cui si è verificato un errore

  • restituisce il numero della riga in una routine se l'errore si è verificato all'interno di una stored procedure o di un trigger.

Restituisce NULL se chiamata all'esterno dell'ambito di un blocco CATCH.

Osservazioni

Questa funzione può essere chiamata ovunque all'interno dell'ambito di un blocco CATCH.

ERROR_LINE restituisce il numero della riga in cui si è verificato l'errore a prescindere dal numero di chiamate o dalla posizione in cui viene chiamata all'interno dell'ambito del blocco CATCH. Questo tipo di comportamento è in contrasto con le funzioni, ad esempio @@ERROR, che restituiscono un numero di errore nell'istruzione immediatamente successiva a quella che ha provocato un errore o nella prima istruzione di un blocco CATCH.

Nei blocchi CATCH nidificati, ERROR_LINE restituisce il numero della riga di errore specifico all'ambito del blocco CATCH che vi fa riferimento. Ad esempio, il blocco CATCH di un costrutto TRY…CATCH potrebbe contenere un costrutto TRY…CATCH nidificato. All'interno del blocco CATCH nidificato, ERROR_LINE restituisce il numero della riga per l'errore che ha richiamato il blocco CATCH nidificato. Se ERROR_LINE viene eseguita nel blocco CATCH esterno, restituisce il numero della riga per l'errore che ha richiamato il blocco CATCH.

Esempi

A. Utilizzo di ERROR_LINE in un blocco CATCH

Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Viene restituito il numero della riga in cui si è verificato l'errore.

USE AdventureWorks;
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. Utilizzo di ERROR_LINE in un blocco CATCH con una stored procedure

Nell'esempio di codice seguente viene illustrata una stored procedure che genererà un errore di divisione per zero. ERROR_LINE restituisce il numero di riga nella stored procedure in cui si è verificato l'errore.

-- 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. Utilizzo di ERROR_LINE in un blocco CATCH con altri strumenti per la gestione degli errori

Nell'esempio seguente viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. Oltre al numero di riga in corrispondenza della quale si è verificato l'errore, vengono restituite le informazioni relative all'errore.

USE AdventureWorks;
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