ERROR_LINE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Denna funktion returnerar radnumret för förekomsten av ett fel som orsakade CATCH-blocket i en TRY... CATCH-konstruktionen ska exekveras.

Transact-SQL syntaxkonventioner

Syntax

ERROR_LINE ( )

Returtyp

int

Returvärde

När den anropas i ett CATCH-block, returnerar ERROR_LINE den

  • radnumret där felet inträffade
  • radnumret i en rutin, om felet inträffade inom en lagrad procedur eller trigger
  • NULL, om den anropas utanför räckvidden för ett CATCH-block.

Anmärkningar

Ett samtal kan ERROR_LINE ske var som helst inom ramen för ett CATCH-block.

ERROR_LINE returnerar radnumret där felet uppstod. Detta sker oavsett var samtalet ERROR_LINE befinner sig inom CATCH-blockets omfattning, och oavsett antalet samtal till ERROR_LINE. Detta står i kontrast till funktioner, såsom @@ERROR. @@ERROR returnerar ett felnummer i satsen direkt efter den som orsakar felet, eller i den första satsen i ett CATCH-block.

I nästlade CATCH-block returnerar ERROR_LINE det felradsnummer som är specifikt för omfattningen av CATCH-blocket där det refereras. Till exempel, CATCH-blocket i en TRY... CATCH-konstruktionen skulle kunna innehålla en nästlad TRY... CATCH-konstruktionen. Inom det nästlade CATCH-blocket returneras ERROR_LINE radnumret för felet som anropade det nästlade CATCH-blocket. Om ERROR_LINE körs i det yttre CATCH-blocket returneras radnumret för felet som anropade just det CATCH-blocket.

Examples

A. Att använda ERROR_LINE i ett CATCH-block

Detta kodexempel visar ett SELECT uttalande som genererar ett del-med-noll-fel. ERROR_LINE returnerar radnumret där felet uppstod.

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

B. Att använda ERROR_LINE i ett CATCH-block med en lagrad prozedur

Detta exempel visar en lagrad procedur som genererar ett del-med-noll-fel. ERROR_LINE returnerar radnumret där felet uppstod.

-- 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. Att använda ERROR_LINE i ett CATCH-block med andra felhanteringsverktyg

Detta kodexempel visar ett SELECT uttalande som genererar ett del-med-noll-fel. ERROR_LINE returnerar radnumret där felet inträffade och information relaterad till själva felet.

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  

Se även

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)