ERROR_LINE (Transact-SQL)

 

**DIESES THEMA GILT FÜR:** ![](../Image/Applies%20to/yes.png)SQL Server \(ab 2008\) ![](../Image/Applies%20to/yes.png)Azure SQL\-Datenbank ![](../Image/Applies%20to/no.png)Azure SQL Data Warehouse ![](../Image/Applies%20to/no.png)Parallel Data Warehouse

Gibt die Zeilennummer der Zeile zurück, in der der Fehler aufgetreten ist, der die Ausführung des CATCH-Blockes eines TRY…CATCH-Konstrukts bewirkt hat.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Azure SQL-Datenbank.

Topic link icon Transact-SQL-Syntaxkonventionen

  
ERROR_LINE ( )  

int

Aufruf in einem CATCH-Block:

  • Gibt die Zeilennummer der Zeile zurück, in der der Fehler aufgetreten ist.

  • Gibt die Zeilennummer in einer Routine zurück, wenn der Fehler in einer gespeicherten Prozedur oder einem Trigger aufgetreten ist.

Gibt NULL zurück, wenn die Funktion außerhalb des Bereichs eines CATCH-Blockes aufgerufen wird.

Diese Funktion kann an jeder beliebigen Position im Gültigkeitsbereich eines CATCH-Blockes aufgerufen werden.

ERROR_LINE gibt die Zeilennummer der Zeile zurück, in der der Fehler aufgetreten ist, unabhängig von der Aufrufhäufigkeit bzw. der Stelle innerhalb des Bereichs des CATCH-Blockes, an dem ERROR_LINE aufgerufen wurde. Dies steht im Gegensatz zu Funktionen, wie @@ERROR, die eine Fehlernummer in der Anweisung zurückgeben, die unmittelbar auf jene folgt, die einen Fehler verursacht hat, oder in der ersten Anweisung eines CATCH-Blockes.

In geschachtelten CATCH-Blöcken gibt ERROR_LINE die für den Bereich des CATCH-Blockes spezifische Fehlerzeilennummer zurück, auf die im Block verwiesen wird. So könnte beispielsweise der CATCH-Block eines TRY…CATCH-Konstrukts ein geschachteltes TRY…CATCH-Konstrukt enthalten. Innerhalb des geschachtelten CATCH-Blocks gibt ERROR_LINE die Zeilennummer des Fehlers zurück, der den geschachtelten CATCH-Block aufgerufen hat. Wird ERROR_LINE im äußeren CATCH-Block ausgeführt, wird die Zeilennummer des Fehlers zurückgegeben, der den CATCH-Block aufgerufen hat.

A.Verwenden von ERROR_LINE in einem CATCH-Block

Das folgende Codebeispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 generiert. Es wird die Zeilennummer der Zeile zurückgegeben, in der der Fehler aufgetreten ist.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_LINE() AS ErrorLine;  
END CATCH;  
GO  

B.Verwenden von ERROR_LINE in einem CATCH-Block mit einer gespeicherten Prozedur

Das folgende Codebeispiel zeigt eine gespeicherte Prozedur, in der ein Fehler aufgrund einer Division durch 0 generiert wird. ERROR_LINE gibt die Zeilennummer in der gespeicherten Prozedur zurück, in der der Fehler aufgetreten ist.

-- 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.Verwenden von ERROR_LINE in einem CATCH-Block mit anderen Tools zur Fehlerbehandlung

Das folgende Codebeispiel zeigt eine SELECT-Anweisung, die einen Fehler aufgrund einer Division durch 0 generiert. Abgesehen von der Zeilennummer der Zeile, in der der Fehler aufgetreten ist, werden Informationen im Zusammenhang mit dem Fehler zurückgegeben.

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  

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)

Community-Beiträge

Anzeigen: