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)