Aracılığıyla paylaş


error_state (Transact-SQL)

Bir try… catch blok neden hata durumu sayısını verircatch yapı çalıştırılacak.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

ERROR_STATE ( )

Dönüş Türleri

int

Dönüş Değeri

İçinde bir catch blokçağrıldığında çalıştırılacak catch blok nedeniyle oluşan hata iletisi durum sayısını verir.

kapsam bir catch blokdışında adlı null döndürür.

Açıklamalar

Bazı hata iletileri kodunda birden fazla noktalarda ortaya Microsoft SQL Server Veritabanı Altyapısı.Örneğin, bir "1105" hata için birkaç farklı koşullar yükseltilebilir.Hata yükseltir her belirli koşul benzersiz durum kodu atar.

Bilinen sorunlar, veritabanları gibi görüntülerken, Microsoft Bilgi Bankası kayıtlı sorun karşılaşılan hata ile aynı olabilir, belirlemek için durum numarasını kullanabilirsiniz.Örneğin, bir Bilgi Bankası makale 2 durumuyla 1105 hata iletisi açıklanır ve 1105 hata iletisini aldığınız bir durumu 3 vardı, kendi hata büyük olasılıkla makalebildirilen olandan farklı bir nedeni vardı.

A SQL Server Destek Mühendisi kaynak kodu burada hata, şu anda oluşturuldu, hangi sağlamak konusunda sorunu tanılamak ek fikirler konumda bulunacak bir hata durumu kodunu da kullanabilirsiniz

error_state herhangi bir kapsam bir catch blokiçinde çağrılabilir.

error_state kaç kez çalıştırmak veya kapsam catch blokiçinde nerede çalıştığına bakmaksızın hata durumu döndürür.@@ Veren yalnızca hata numarasını deyim ilk deyim bir catch blokveya sonra hemen bir hata neden olan bir hata gibi işlevler için tersine budur.

Yuvalanmış catch bloklarında error_state hata durumu belirli kapsam başvuruda bulunulan catch blok döndürür.Örneğin, catch blok bir outer try...Yuvalanmış try catch yapı olabilir...catch yapı.Yuvalanmış catch blokiçinde error_state yuvalanmış catch blokçağrılan hata durumu döndürür.error_state catch blokiçinde çalıştırırsanız, o catch blokçağrılan hata durumu döndürür.

Örnekler

A.Bir catch blokiçinde error_state kullanma

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

USE AdventureWorks2008R2;
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.error_state bir catch blok diğer hata işleme araçları ile kullanma

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

USE AdventureWorks2008R2;
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