Condividi tramite


ERROR_LINE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Questa funzione restituisce il numero di riga dell'occorrenza di un errore che ha causato l'esecuzione del blocco CATCH di un costrutto TRY...CATCH.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

ERROR_LINE ( )

Tipo restituito

int

Valore restituito

Quando chiamata in un blocco CATCH, ERROR_LINE restituisce

  • Numero di riga in cui si è verificato l'errore
  • numero di riga in una routine, se l'errore si è verificato all'interno di una stored procedure o di un trigger
  • NULL, se chiamata all'esterno dell'ambito di un blocco CATCH.

Osservazioni:

Una chiamata a ERROR_LINE può verificarsi da un qualsiasi punto nell'ambito di un blocco CATCH.

ERROR_LINE restituisce il numero di riga in cui si è verificato un errore, indipendentemente dalla posizione della chiamata a ERROR_LINE nell'ambito del blocco CATCH e dal numero di chiamate a ERROR_LINE. Questo tipo di comportamento è in contrasto con funzioni come @@ERROR. @@ERROR restituisce 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 di riga dell'errore specifico dell'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 di riga per l'errore che ha richiamato il blocco CATCH nidificato. Se ERROR_LINE viene eseguita nel blocco CATCH esterno, restituisce il numero di riga per l'errore che ha richiamato il blocco CATCH specifico.

Esempi

R. Utilizzo di ERROR_LINE in un blocco CATCH

In questo esempio viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. ERROR_LINE restituisce il numero di riga in cui si è verificato l'errore.

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

In questo esempio viene illustrata una stored procedure che genera un errore di divisione per zero. ERROR_LINE restituisce il numero di riga 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

In questo esempio viene illustrata un'istruzione SELECT che genera un errore di divisione per zero. ERROR_LINE restituisce il numero di riga in cui si è verificato l'errore e le informazioni relative all'errore stesso.

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  

Vedi anche

TRY...CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)