Aracılığıyla paylaş


error_state (Transact-sql)

try… catch bloğu neden hata durumunu döndürürcatch yapı çalıştırılacak.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

ERROR_STATE ( )

Dönüş Türleri

int

Dönüş Değeri

Bir catch bloğu çağrıldığında çalıştırılacak catch bloğu neden hata iletisini durum sayısını döndürür.

Bir catch bloğu kapsamı dışında null döndürür.

Açıklamalar

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

Bilinen sorunlar, veritabanları gibi görüntülerken MicrosoftBilgi Bankası, kaydedilen sorunu karşılaşılan hata ile aynı olabilir belirlemek için durum numarasını kullanabilirsiniz. Örneğin, bir Bilgi Bankası makalesini 1105 hata iletisi bir devlet ile 2 tartışır ve 1105 hata iletisini aldığınız bir durumu 3 vardı, sizin hata muhtemelen yazıda bildirilen olandan farklı bir neden vardı.

A SQL ServerDestek Mühendisi de sorunu tanılamak için ek fikirler verebilir nerede hata yükseltilmiş, kaynak kodunda yerini bulmak için hata durum kodu kullanabilirsiniz.

error_state, herhangi bir catch bloğu kapsamında çağrılabilir.

error_state hata durumu ne olursa olsun kaç kez çalıştırmak olduğunu döndürür veya yakalamak kapsamı içinde koşmak olduğu engelleyebilir. @@ error, yalnızca hata hemen bir hata neden bir sonraki deyime veya ilk deyimi bir catch bloğu verir gibi fonksiyonları farklı olarak budur.

Yuvalanmış catch bloklarında error_state hata verir durumunu yakalamak için kapsam özel blok o içinde hangi başvurulmaktadır. Örneğin, bir dış deneyin catch bloğu...catch yapısı yuvalanmış DENEMEK olabilir...catch yapı. Yuvalanmış catch bloğu içinde error_state yuvalanmış catch bloğu çağrılan hata durumu döndürür. error_state dış catch bloğu içinde çalıştırılırsa, devlet bu catch bloğu çağrılan hata döndürür.

Örnekler

A.error_state bir catch bloğu kullanma

Aşağıdaki örnekte gösterildiği bir SELECTbir tarafından sıfıra bölme hatası üretir deyimini. Hata durumu döndürülür.

USE AdventureWorks2012;
GO

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

USE AdventureWorks2012;
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 bloğu diğer hata işleme araçları ile kullanma

Aşağıdaki örnekte gösterildiği bir SELECTbir tarafından sıfıra bölme hatası üretir deyimini. Hata durumu ile ilgili hata döndürülür.

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

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

Ayrıca bkz.

Başvuru

sys.messages (Transact-sql)

DENEYİN...catch (Transact-sql)

ERROR_LINE (Transact-sql)

error_message (Transact-sql)

error_number (Transact-sql)

error_procedure (Transact-sql)

ERROR_SEVERITY (Transact-sql)

RAISERROR (Transact-SQL)

@@ error (Transact-sql)