Aracılığıyla paylaş


ERROR_NUMBER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Bu fonksiyon, bir TRY'nin CATCH bloğuna neden olan hata sayısını döndürür... CATCH yapısını yürütmek için.

Transact-SQL söz dizimi kuralları

Sözdizimi

ERROR_NUMBER ( )  

Dönüş Türleri

int

Dönüş Değeri

CATCH bloğunda çağrıldığında, ERROR_NUMBER CATCH bloğunun çalışmasına neden olan hatanın hata numarasını döndürür.

ERROR_NUMBER CATCH bloğunun kapsamı dışında çağrıldığında NULL döner.

Açıklamalar

ERROR_NUMBER CATCH bloğunun kapsamı içindeki herhangi bir yerde çağrıları destekler.

ERROR_NUMBER kaç kez çalıştırıldığından veya blok kapsamında nerede çalıştığından CATCH bağımsız olarak ilgili bir hata sayısını döndürür. Bu, @@ERROR gibi bir fonksiyonun aksine, hata yapan ifadede hemen ardından gelen bir hata sayısını döndürür.

İçiçe CATCH bir blokta, ERROR_NUMBER o CATCH bloğa referans veren blokun CATCH kapsamına özgü hata sayısını döndürür. Örneğin, CATCH dış TRY'nin bloğu... CATCH yapısının iç TRY...CATCH yapısı olabilir. O iç CATCH blok içinde, ERROR_NUMBERCATCH bloğu çağıran hata sayısını döndürür. Dış CATCH blokta çalıştırılırsaERROR_NUMBER, o dış CATCH bloğu çağıran hata sayısını döndürür.

Örnekler

A. CATCH blokunda ERROR_NUMBER kullanımı

Bu örnek, sıfıra böl hatası üreten bir SELECT ifadeyi gösterir. Blok CATCH hata numarasını döndürür.

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

Sonuç kümesi aşağıdadır.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

B. ERROR_NUMBER'yi CATCH blokunda diğer hata işleme araçlarıyla kullanmak

Bu örnek, sıfıra böl hatası üreten bir SELECT ifadeyi gösterir. Hata numarasıyla birlikte, CATCH blok o hata hakkında bilgi döndürür.

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  

Sonuç kümesi aşağıdadır.

-----------

(0 row(s) affected)

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

(1 row(s) affected)

Ayrıca Bkz.

sys.messages (Transact-SQL)
DENEYIN... CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
HATA_DURUMU (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
Hatalar ve Olaylar Başvurusu (Veritabanı Motoru)