Aracılığıyla paylaş


ERROR_MESSAGE (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 işlev, TRY'nin CATCH bloğuna neden olan hatanın ileti metnini döndürür... Yürütülecek CATCH yapısı.

Transact-SQL söz dizimi kuralları

Sözdizimi

ERROR_MESSAGE ( )   

Dönüş Türleri

nvarchar(4000)

Dönüş Değeri

CATCH bloğunda çağrıldığında, ERROR_MESSAGE bloğun çalışmasına neden olan hata iletisinin CATCH tam metnini döndürür. Metin, uzunluklar, nesne adları veya saatler gibi tüm alt güncelleştirilebilir parametreler için sağlanan değerleri içerir.

ERROR_MESSAGE CATCH bloğunun kapsamı dışında çağrıldığında NULL döndürür.

Açıklamalar

ERROR_MESSAGE CATCH bloğu kapsamındaki her yerden çağrıları destekler.

ERROR_MESSAGE kaç kez çalıştığından veya bloğun kapsamı içinde nerede çalıştığından CATCH bağımsız olarak ilgili bir hata iletisi döndürür. Bu, @@ERROR gibi bir işlevle karşıttır ve yalnızca hataya neden olanın hemen ardından deyiminde bir hata numarası döndürür.

İç içe bloklardaCATCH, ERROR_MESSAGE bu bloğun başvurduğunu CATCH bloğun kapsamına CATCH özgü hata iletisini döndürür. Örneğin, dış TRY'nin CATCH bloğu... CATCH yapısı bir iç TRY...CATCH yapıya sahip olabilir. Bu iç bloğun içinde CATCH , ERROR_MESSAGECATCH bloğu çağıran hatadan gelen iletiyi döndürür. Dış ERROR_MESSAGE blokta çalıştırılırsaCATCH, bu dış CATCH bloğu çağıran hatadan gelen iletiyi döndürür.

Örnekler

A. CATCH bloğunda ERROR_MESSAGE kullanma

Bu örnekte sıfıra bölme hatası oluşturan bir deyim gösterilmektedir SELECT . Blok CATCH , hata iletisini döndürür.

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

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

-----------

(0 row(s) affected)

ErrorMessage
----------------------------------
Divide by zero error encountered.

(1 row(s) affected)

B. Catch bloğunda diğer hata işleme araçlarıyla ERROR_MESSAGE kullanma

Bu örnekte sıfıra bölme hatası oluşturan bir deyim gösterilmektedir SELECT . Blok, CATCH hata iletisiyle birlikte bu hatayla ilgili bilgileri 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)
DENEMEK... 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ı Altyapısı)