ERROR_LINE (Transact-SQL)

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.

Syntax

ERROR_LINE()

Rückgabewert

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.

Hinweise

Diese Funktion kann von einer beliebigen Stelle innerhalb des Bereichs 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-Blockes 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.

Rückgabetyp

int

Beispiele

A. Verwenden von ERROR_LINE in einem CATCH-Block

Im folgenden Codebeispiel wird eine SELECT-Anweisung dargestellt, die einen Fehler aufgrund einer Division durch Null generiert. Es wird die Zeilennummer der Zeile zurückgegeben, in der der Fehler aufgetreten ist.

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. Verwenden von ERROR_LINE in einem CATCH-Block mit einer gespeicherten Prozedur

Im folgenden Codebeispiel wird eine gespeicherte Prozedur dargestellt, die einen Fehler aufgrund einer Division durch Null generiert. 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

Im folgenden Codebeispiel wird eine SELECT-Anweisung dargestellt, die einen Fehler aufgrund einer Division durch Null generiert. Abgesehen von der Zeilennummer der Zeile, in der der Fehler aufgetreten ist, werden Informationen im Zusammenhang mit dem Fehler zurückgegeben.

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

Siehe auch

Verweis

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)

Andere Ressourcen

Abrufen von Fehlerinformationen in Transact-SQL
Verwenden von TRY...CATCH in Transact-SQL
Verwenden von RAISERROR
Schweregrade von Datenbankmodulfehlern

Hilfe und Informationen

Informationsquellen für SQL Server 2005