Aracılığıyla paylaş


ERROR_STATE (Transact-SQL)

Çalıştırılacak bir TRY…CATCH yapýsý CATCH blok neden hata durumu sayısını verir.

Topic link iconTransact-SQL sözdizimi kuralları

ERROR_STATE ( )

Dönüş Türleri

int

Return Value

Bir CATCH blok içinde çağrıldığında, durumu CATCH blok çalışmasına neden olan bir hata iletisi verir.

kapsam dışında bir CATCH blok adlı ise, NULL döndürüyor.

Remarks

Some error messages can be raised at multiple points in the code for the Microsoft SQL Server Database Engine.Örneğin, "1105" hata için birkaç farklı koşullar yükseltilebilir.Hata başlatan her belirli bir koşul için bir benzersiz il kodu atar.

Bilinen sorunlar, veritabanları gibi görüntülerken Microsoft Bilgi Bankası, il numarası kaydedilmiş sorunla karşılaştığınız hata aynı, belirlemek için kullanabilirsiniz. Örneğin, bir Bilgi Bankası makalesi 2 durumuyla 1105 hata iletisi anlatılır ve 1105 hata iletisini aldığınız bir durum 3 sahipti, hata büyük olasılıkla makalesinde bildirilen olandan farklı bir nedenle sahipti.

C SQL Server Destek mühendisine il kodu bir hatadan ek fikirler, sorunu tanılamak nasıl sağlayabilir; burada, hata oluşturulur, kaynak koduna yerini bulmak için de kullanılabilir.

ERROR_STATE içinde herhangi bir yere çağrılabilir kapsam bir CATCH blok.

Hata durumu dikkate almadan kaç kez yürütüleceğini veya bunun içinde çalıştırılır ERROR_STATE döndürür kapsam CATCH blok.@@ Veren yalnızca hata numarasını hemen hataya neden olan bir sonraki veya bir CATCH bloğunun ilk deyim HATA,'gibi işlevleri için tersine budur.

Iç içe geçmiş CATCH blok içinde ERROR_STATE hata döndürüyor durumunu kapsama özel CATCH engellemek, onu başvuruda bulunulan içinde.Örneğin, bir dış... TRY'i CATCH yapı CATCH blok iç içe geçmiş bir TRY,... CATCH yapýsý olabilir.Iç içe geçmiş CATCH blok içinde ERROR_STATE, iç içe geçmiş CATCH blok çağrılan hata durumu döndürür.Dış CATCH blok ERROR_STATE çalıştırılırsa, CATCH blok çağrılan hata durumu döndürür.

Örnekler

C.Bir CATCH blok içinde ERROR_STATE kullanma

Aşağıdaki örnekte gösterildiği bir SELECT deyim bir sıfıra bölme hatasına neden olur. Hata durumu döndürüldü.

USE AdventureWorks;
GO

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

b.Diğer hata işleme araçlarıyla bir CATCH blok içinde ERROR_STATE kullanma

Aşağıdaki örnekte gösterildiği bir SELECT deyim bir sıfıra bölme hatasına neden olur. Hata durumu ile birlikte, bilgileri hata döndürülür.

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