Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft 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_MESSAGE iç CATCH 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ı)