error_state (Transact-sql)
try… catch bloğu neden hata durumunu döndürürcatch yapı çalıştırılacak.
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
DENEYİN...catch (Transact-sql)