Udostępnij za pośrednictwem


ERROR_NUMBER (Transact-SQL)

Zwraca numer błędu błąd, który spowodował blok CATCH konstrukcji TRY…CATCH ma być uruchomiony.

Topic link iconKonwencje składni języka Transact-SQL

ERROR_NUMBER ( )

Zwracane typy

int

Return Value

Po wywołaniu w blok CATCH zwraca wartość błędu liczba komunikat o błędzie, który spowodował blok CATCH do uruchomienia.

Zwraca wartość NULL, jeśli o nazwie poza zakres blok CATCH.

Remarks

Ta funkcja może być wywołana w dowolne miejsce w zakresie blok CATCH.

ERROR_NUMBER zwraca numer błędu, niezależnie od tego, ile razy, to jest wykonywane, którym jest uruchomiony w zakresie połowy blok.Jest to w przeciwieństwie do @@ błąd, który zwraca tylko numer błędu w instrukcja znajdującej się bezpośrednio po tej, która powoduje błąd, lub w pierwszej instrukcja blok CATCH.

W blokach CATCH zagnieżdżone, ERROR_NUMBER zwraca błąd numer do zakres od połowy zablokować, w której istnieje odwołanie.Na przykład blok CATCH zewnętrzne konstrukcja TRY... CATCH może mieć zagnieżdżonych konstrukcja TRY... CATCH.W obrębie blok CATCH zagnieżdżone ERROR_NUMBER zwraca numer błędu, która wywołała zagnieżdżonych blok CATCH.Jeśli ERROR_NUMBER jest uruchamiana w zewnątrz blok CATCH, zwraca numer błędu, która wywołała tego blok CATCH.

Przykłady

A.Za pomocą ERROR_NUMBER w blok CATCH

Następujący kod przykładzie SELECT instrukcja generuje błąd dzielenia przez zero. Numer błędu jest zwracany.

USE AdventureWorks;
GO

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

B.Za pomocą ERROR_NUMBER w blok CATCH z innymi narzędziami obsługi błędów

Następujący kod przykładzie SELECT instrukcja generuje błąd dzielenia przez zero. Informacje, które odnoszą się do błędu jest zwracana wraz z liczbą błąd.

USE AdventureWorks;
GO

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