Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Denna funktion returnerar felnumret för felet som orsakade CATCH-blocket i en TRY... CATCH-konstruktionen ska exekveras.
Transact-SQL syntaxkonventioner
Syntax
ERROR_NUMBER ( )
Returtyper
int
Returvärde
När den anropas i ett CATCH-block returneras ERROR_NUMBER felnumret för det fel som orsakade att CATCH-blocket kördes.
ERROR_NUMBER returnerar NULL när den anropas utanför räckvidden för ett CATCH-block.
Anmärkningar
ERROR_NUMBER stöder anrop var som helst inom ramen för ett CATCH-block.
ERROR_NUMBER returnerar ett relevant felnummer oavsett hur många gånger den körs eller var den körs inom blockets CATCH omfattning. Detta står i kontrast till en funktion som @@ERROR, som endast returnerar ett felnummer i påståendet direkt efter det som orsakar felet.
I ett nästlatat CATCH block returnerar ERROR_NUMBER felnumret som är specifikt för omfattningen av blocket CATCH som refererade till det blocket CATCH . Till exempel, blocket CATCH av en yttre TRY... CATCH-konstruktionen kan ha en inre TRY...CATCH konstruktion. Inuti det inre CATCH blocket returnerar ERROR_NUMBER numret på felet som anropade det inre CATCH blocket. Om ERROR_NUMBER den körs i det yttre CATCH blocket returnerar den numret på felet som anropade det yttre CATCH blocket.
Examples
A. Att använda ERROR_NUMBER i ett CATCH-block
Detta exempel visar ett SELECT påstående som genererar ett del-med-noll-fel. Blocket CATCH returnerar felnumret.
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
Här är resultatet.
-----------
(0 row(s) affected)
ErrorNumber
-----------
8134
(1 row(s) affected)
B. Att använda ERROR_NUMBER i ett CATCH-block med andra felhanteringsverktyg
Detta exempel visar ett SELECT påstående som genererar ett del-med-noll-fel. Tillsammans med felnumret returnerar blocket CATCH information om det 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
Här är resultatet.
-----------
(0 row(s) affected)
ErrorNumber ErrorSeverity ErrorState ErrorProcedure ErrorLine ErrorMessage
----------- ------------- ----------- --------------- ---------- ----------------------------------
8134 16 1 NULL 4 Divide by zero error encountered.
(1 row(s) affected)
Se även
sys.messages (Transact-SQL)
TRY... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Referens för fel och händelser (databasmotor)