Sdílet prostřednictvím


ERROR_LINE (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Tato funkce vrací číslo řádku výskytu chyby, která způsobila blok CATCH v TRY... CATCH konstrukce pro provedení.

Transact-SQL konvence syntaxe

Syntaxe

ERROR_LINE ( )

Návratový typ

int

Návratová hodnota

Při volání v bloku CATCH se vrací ERROR_LINE

  • číslo řádku, kde došlo k chybě
  • číslo řádku v rutině, pokud k chybě došlo v rámci uložené procedury nebo spouštěče
  • NULL, pokud je volán mimo rozsah bloku CATCH.

Poznámky

Volání k ERROR_LINE volání může proběhnout kdekoli v rámci bloku CATCH.

ERROR_LINE vrací číslo řádku, ve kterém chyba nastala. To se děje bez ohledu na umístění hovoru ERROR_LINE v rozsahu bloku CATCH a bez ohledu na počet hovorů do ERROR_LINE. To je v kontrastu s funkcemi, jako je @@ERROR. @@ERROR vrací chybové číslo v příkazu bezprostředně následujícím po tom, které chybu způsobuje, nebo v prvním příkazu bloku CATCH.

V vnořených blocích CATCH vrací ERROR_LINE chybové číslo řádku specifické pro rozsah bloku CATCH, ve kterém je odkazován. Například blok CATCH v TRY... Konstrukce CATCH by mohla obsahovat vnořený TRY... CATCH konstrukce. V rámci vnořeného bloku CATCH vrací ERROR_LINE číslo řádku pro chybu, která vyvolala vnořený blok CATCH. Pokud běží ERROR_LINE v vnějším bloku CATCH, vrátí číslo řádku pro chybu, která tento konkrétní blok CATCH vyvolala.

Examples

A. Použití ERROR_LINE v bloku CATCH

Tento příklad kódu ukazuje příkaz, SELECT který generuje chybu dělení nulou. ERROR_LINE vrátí číslo řádku, kde chyba nastala.

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

B. Použití ERROR_LINE v bloku CATCH s uloženou procedurou

Tento příklad ukazuje uloženou proceduru, která generuje chybu dělení nulou. ERROR_LINE vrátí číslo řádku, kde chyba nastala.

-- 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. Použití ERROR_LINE v bloku CATCH s dalšími nástroji pro zpracování chyb

Tento příklad kódu ukazuje příkaz, SELECT který generuje chybu dělení nulou. ERROR_LINE vrací číslo řádku, kde chyba nastala, a informace týkající se samotné chyby.

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  

Viz také

VYZKOUŠET... ZACHYTIT (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)