Delen via


ERROR_LINE (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Deze functie geeft het regelnummer terug van het voorkomen van een fout die het CATCH-blok van een TRY veroorzaakte... CATCH-constructie om uit te voeren.

Transact-SQL syntaxis-conventies

Syntaxis

ERROR_LINE ( )

Retourtype

int

Retourwaarde

Wanneer het wordt aangeroepen in een CATCH-blok, ERROR_LINE keert het terug

  • het lijnnummer waar de fout optrad
  • het regelnummer in een routine, als de fout optrad binnen een opgeslagen procedure of trigger
  • NULL, als het buiten het bereik van een CATCH-blok wordt aangeroepen.

Opmerkingen

Een oproep kan ERROR_LINE overal binnen het bereik van een CATCH-blok plaatsvinden.

ERROR_LINE geeft het regelnummer terug waarop de fout is opgetreden. Dit gebeurt ongeacht de locatie van het ERROR_LINE gesprek binnen het bereik van het CATCH-blok, en ongeacht het aantal oproepen naar ERROR_LINE. Dit staat in contrast met functies, zoals @@ERROR. @@ERROR geeft een foutnummer terug in de instructie direct na die welke een fout veroorzaakt, of in de eerste instructie van een CATCH-blok.

In geneste CATCH-blokken ERROR_LINE geeft het foutregelnummer terug dat specifiek is voor de scope van het CATCH-blok waarin het wordt verwezen. Bijvoorbeeld, het CATCH-blok van een TRY... CATCH-constructie zou een geneste TRY kunnen bevatten... CATCH-constructie. Binnen het geneste CATCH-blok ERROR_LINE wordt het regelnummer teruggegeven voor de fout die het geneste CATCH-blok heeft aangeroepen. Als ERROR_LINE het in het buitenste CATCH-blok draait, geeft het het regelnummer terug voor de fout die dat specifieke CATCH-blok heeft opgeroepen.

Voorbeelden

Eén. ERROR_LINE gebruiken in een CATCH-blok

Dit codevoorbeeld toont een SELECT instructie die een deel-door-nul fout genereert. ERROR_LINE geeft het regelnummer terug waar de fout is opgetreden.

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

B. Het gebruik van ERROR_LINE in een CATCH-blok met een opgeslagen procedure

Dit voorbeeld toont een opgeslagen procedure die een deel-door-nul fout genereert. ERROR_LINE geeft het regelnummer terug waar de fout is opgetreden.

-- 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. Gebruik ERROR_LINE in een CATCH-blok met andere foutafhandelingstools

Dit codevoorbeeld toont een SELECT instructie die een deel-door-nul fout genereert. ERROR_LINE geeft het regelnummer terug waar de fout is opgetreden, en informatie die betrekking heeft op de fout zelf.

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  

Zie ook

TRY... CATCH (Transact-SQL)
sys.messages (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
FOUT_PROCÉDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
FOUTTOESTAND (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)