Megosztás a következőn keresztül:


ERROR_LINE (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez a függvény visszaadja azt a sorszámot, amikor egy TRY CATCH blokkot okozta hiba előfordult... CATCH konstrukció végrehajtásra.

Transact-SQL szintaxis konvenciók

Szemantika

ERROR_LINE ( )

Visszatérési típus

int

Visszaadott érték

Ha CATCH blokkban hívják, ERROR_LINE visszatér

  • a sorszám, ahol a hiba történt
  • a sorszám egy rutinban, ha a hiba egy tárolt eljárásban vagy triggerben történt
  • NULL, ha a CATCH blokk hatókörén kívül hívják.

Megjegyzések

A hívás ERROR_LINE bárhol megtörténhet a CATCH blokk keretein belül.

ERROR_LINE visszaadja azt a sorszámot, ahol a hiba történt. Ez függetlenül attól, hogy a hívás hol helyezkedik ERROR_LINE el a CATCH blokk hatókörén belül, és attól függ, hány hívás érkezik .ERROR_LINE Ez ellentétben áll a @@ERROR-es függvényekkel. @@ERROR hibászámot ad vissza a hibát okozó utasítás utáni állításban, vagy a CATCH blokk első állításában.

A beépített CATCH blokkokban ERROR_LINE visszaadja a hibasorszámot, amely a CATCH blokk hatókörére vonatkozik, amelyben hivatkoznak. Például a TRY... CATCH blokkja... A CATCH konstrukció tartalmazhat egy beágyazott TRY-t... CATCH konstrukció. A beágyazott CATCH blokkban ERROR_LINE visszaadja a sorszámot annak a hibának, amely a beágyazott CATCH blokkot idézte elő. Ha ERROR_LINE a külső CATCH blokkban fut, akkor visszaadja annak a hibának a sorszámát, amely az adott CATCH blokkot idézte elő.

Példák

A. ERROR_LINE használata egy CATCH blokkban

Ez a kódpélda egy SELECT olyan állítást mutat, amely nullával osztó hibát generál. ERROR_LINE visszaadja azt a sorszámot, ahol a hiba történt.

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

B. ERROR_LINE használata egy CATCH blokkban tárolt eljárással

Ez a példa egy tárolt eljárást mutat, amely nullával osztó hibát generál. ERROR_LINE visszaadja azt a sorszámot, ahol a hiba történt.

-- 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. ERROR_LINE használata CATCH blokkban más hibakezelő eszközökkel

Ez a kódpélda egy SELECT olyan állítást mutat, amely nullával osztó hibát generál. ERROR_LINE visszaadja a sorszámot, ahol a hiba történt, valamint magával a hibával kapcsolatos információkat.

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  

Lásd még:

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)