Udostępnij za pomocą


ERROR_NUMBER (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Funkcja ta zwraca numer błędu błędu, który spowodował blok CATCH w TRY... Konstrukcja CATCH do wykonania.

Transact-SQL konwencje składni

Składnia

ERROR_NUMBER ( )  

Typy zwracane

int

Wartość zwracana

Po wywołaniu w bloku CATCH zwraca numer błędu błędu, ERROR_NUMBER który spowodował uruchomienie bloku CATCH.

ERROR_NUMBER zwraca NULL, gdy wywołamy go poza zakresem bloku CATCH.

Uwagi

ERROR_NUMBER obsługuje wywołania w dowolnym miejscu w zakresie bloku CATCH.

ERROR_NUMBER zwraca odpowiedni numer błędu niezależnie od liczby uruchomień lub miejsca w zakresie bloku CATCH . Jest to w przeciwieństwie do funkcji takiej jak @@ERROR, która zwraca tylko numer błędu w instrukcji bezpośrednio po tym, który powoduje błąd.

W zagnieżdżonym CATCH bloku zwraca ERROR_NUMBER numer błędu specyficzny dla zakresu CATCH bloku, który odwołał się do tego CATCH bloku. Na przykład CATCH blok zewnętrznego TRY... Konstrukcja CATCH mogłaby mieć konstrukcję wewnętrzną TRY...CATCH . Wewnątrz tego CATCH wewnętrznego bloku ERROR_NUMBER zwraca się numer błędu, który wywołał ten CATCH blok. Jeśli ERROR_NUMBER działa w bloku zewnętrznym CATCH , zwraca numer błędu, który wywołał ten blok zewnętrzny CATCH .

Przykłady

A. Wykorzystanie ERROR_NUMBER w bloku CATCH

Ten przykład pokazuje SELECT zdanie generujące błąd dzielenie przez zero. Blok CATCH zwraca numer błędu.

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

Oto zestaw wyników.

-----------

(0 row(s) affected)

ErrorNumber
-----------
8134

(1 row(s) affected)

B. Wykorzystanie ERROR_NUMBER w bloku CATCH z innymi narzędziami do obsługi błędów

Ten przykład pokazuje SELECT zdanie generujące błąd dzielenie przez zero. Wraz z numerem CATCH błędu blok zwraca informacje o tym błędzie.

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  

Oto zestaw wyników.

-----------

(0 row(s) affected)

ErrorNumber ErrorSeverity ErrorState  ErrorProcedure   ErrorLine  ErrorMessage
----------- ------------- ----------- ---------------  ---------- ----------------------------------
8134        16            1           NULL             4          Divide by zero error encountered.

(1 row(s) affected)

Zobacz też

sys.messages (Transact-SQL)
TRY... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
BŁĄD_PROCEDURY (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Informacje o błędach i zdarzeniach (aparat bazy danych)