Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Diese Funktion gibt die Zeilennummer des Fehlers zurück, der die Ausführung des CATCH-Blocks eines TRY...CATCH-Konstrukts ausgelöst hat.
Transact-SQL-Syntaxkonventionen
Syntax
ERROR_LINE ( )
Rückgabetyp
int
Rückgabewert
Wenn die Funktion in einem CATCH-Block aufgerufen wird, gibt ERROR_LINE
- die Nummer der Zeile zurück, in der der Fehler aufgetreten ist
- die Zeilennummer in einer Routine zurück, wenn der Fehler in einer gespeicherten Prozedur oder einem Trigger aufgetreten ist
- NULL zurück, wenn sie außerhalb des Bereichs eines CATCH-Blocks aufgerufen wurde.
Hinweise
Ein Aufruf von ERROR_LINE kann überall im Bereich eines CATCH-Blocks auftreten.
ERROR_LINE gibt die Nummer der Zeile zurück, in der der Fehler aufgetreten ist. Dies geschieht unabhängig davon, wo ERROR_LINE innerhalb des Bereichs vom CATCH-Block aufgerufen wurde, und unabhängig davon, wie oft ERROR_LINE aufgerufen wurde. Dies steht im Gegensatz zu Funktionen wie @@ERROR. @@ERROR gibt eine Fehlernummer in der Anweisung zurück, die unmittelbar auf die folgt, die einen Fehler verursacht hat sowie in der ersten Anweisung eines CATCH-Blocks.
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. Wenn ERROR_LINE im äußeren CATCH-Block ausgeführt wird, gibt es die Zeilennummer des Fehlers zurück, der den spezifischen CATCH-Block aufgerufen hat.
Beispiele
A. Verwenden von ERROR_LINE in einem CATCH-Block
In diesem Codebeispiel wird eine SELECT-Anweisung dargestellt, die einen Fehler aufgrund einer Division durch 0 (null) generiert.
ERROR_LINE gibt die Nummer der Zeile zurück, 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
Dieses Beispiel zeigt eine gespeicherte Prozedur, in der ein Fehler aufgrund einer Division durch 0 (null) generiert wird.
ERROR_LINE gibt die Nummer der Zeile 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
In diesem Codebeispiel wird eine SELECT-Anweisung dargestellt, die einen Fehler aufgrund einer Division durch 0 (null) generiert.
ERROR_LINE gibt die Nummer der Zeile, in der der Fehler aufgetreten ist, sowie Informationen zum Fehler selbst zurück.
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
Weitere Informationen
VERSUCHEN... 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)