Aracılığıyla paylaş


SET NUMERIC_ROUNDABORT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Bir ifadede yuvarlatma hassasiyet kaybına neden olduğunda oluşan hata raporlama seviyesini belirtir.

Transact-SQL söz dizimi kuralları

Sözdizimi


SET NUMERIC_ROUNDABORT { ON | OFF }

Açıklamalar

SET NUMERIC_ROUNDABORT AÇIKSA, bir ifadede hassasiyet kaybı oluştuğunda hata oluşur. KAPALı olarak ayarlandığında, hassasiyet kayıpları hata mesajı oluşturmaz. Sonuç, sonucu depolayan sütunun veya değişkenin hassasiyetine göre yuvarlanır.

Bir değeri sabit hassasiyetle bir sütunda veya değişkende daha az hassasiyetle saklamaya çalıştığınızda hassasiyet kaybı meydana gelir.

SET NUMERIC_ROUNDABORT AÇIKSA, ARITHABORT kümesi oluşturulan hatanın ciddiyetini belirler. Bu tablo, hassasiyet kaybı yaşandığında bu iki ayarın etkilerini göstermektedir.

Setting BAŞLA NUMERIC_ROUNDABORT BAŞLAT NUMERIC_ROUNDABORT
ARITHABORT'u AÇIN Hata üretilir; hiçbir sonuç seti gelmedi. Hata veya uyarı yok; Sonuç yuvarlanmıştır.
ARITHABORT'u BAŞLAT Uyarı geri dönüyor; ifade NULL döner. Hata veya uyarı yok; Sonuç yuvarlanmıştır.

SET NUMERIC_ROUNDABORT ayarı, ayrıştırma zamanında değil, çalıştırma veya çalıştırma zamanında ayarlanır.

SET NUMERIC_ROUNDABORT, hesaplanan sütunlarda veya indekslenmiş görünümlerde endeks oluştururken veya değiştirirken KAPALı olmalıdır. SET NUMERIC_ROUNDABORT AÇIKSA, hesaplanan sütunlarda veya indekslenmiş görünümlerde indeksli tablolar üzerindeki aşağıdaki ifadeler başarısız olur:

  • YARATMAK
  • Güncelleme
  • INSERT
  • DELETE

Hesaplanan sütunlarda indekslenmiş görünümler ve indekslerle gerekli SET seçenek ayarları hakkında daha fazla bilgi için Dikkate Alınanlar bölümünü inceleyebilirsiniz.

Bu ayarın mevcut ayarını görmek için aşağıdaki sorguyu çalıştırın:

DECLARE @NUMERIC_ROUNDABORT VARCHAR(3) = 'OFF';  
IF ( (8192 & @@OPTIONS) = 8192 ) SET @NUMERIC_ROUNDABORT = 'ON';  
SELECT @NUMERIC_ROUNDABORT AS NUMERIC_ROUNDABORT;  
  

Permissions

"" genel "" rolüne üyelik gerektirir.

Örnekler

Aşağıdaki örnek, dört ondalık basamaya kadar kesin olan iki değeri göstermektedir. Eklenir ve iki ondalık basamaya tam olarak bir değişkende saklanırlar. İfadeler, farklı SET NUMERIC_ROUNDABORT ve SET ARITHABORT ortamların etkilerini gösterir.

-- SET NOCOUNT to ON,   
-- SET NUMERIC_ROUNDABORT to ON, and SET ARITHABORT to ON.  
SET NOCOUNT ON;  
PRINT 'SET NUMERIC_ROUNDABORT ON';  
PRINT 'SET ARITHABORT ON';  
SET NUMERIC_ROUNDABORT ON;  
SET ARITHABORT ON;  
GO  
DECLARE @result DECIMAL(5, 2),  
   @value_1 DECIMAL(5, 4),   
   @value_2 DECIMAL(5, 4);  
SET @value_1 = 1.1234;  
SET @value_2 = 1.1234 ;  
SELECT @result = @value_1 + @value_2;  
SELECT @result;  
GO  
  
-- SET NUMERIC_ROUNDABORT to ON and SET ARITHABORT to OFF.  
PRINT 'SET NUMERIC_ROUNDABORT ON';  
PRINT 'SET ARITHABORT OFF';  
SET NUMERIC_ROUNDABORT ON;  
SET ARITHABORT OFF;  
GO  
DECLARE @result DECIMAL(5, 2),  
   @value_1 DECIMAL(5, 4),   
   @value_2 DECIMAL(5, 4);  
SET @value_1 = 1.1234;  
SET @value_2 = 1.1234 ;  
SELECT @result = @value_1 + @value_2;  
SELECT @result;  
GO  
  
-- SET NUMERIC_ROUNDABORT to OFF and SET ARITHABORT to ON.  
PRINT 'SET NUMERIC_ROUNDABORT OFF';  
PRINT 'SET ARITHABORT ON';  
SET NUMERIC_ROUNDABORT OFF;  
SET ARITHABORT ON;  
GO  
DECLARE @result DECIMAL(5, 2),  
   @value_1 DECIMAL(5, 4),   
   @value_2 DECIMAL(5, 4);  
SET @value_1 = 1.1234;  
SET @value_2 = 1.1234 ;  
SELECT @result = @value_1 + @value_2;  
SELECT @result;  
GO  
  
-- SET NUMERIC_ROUNDABORT to OFF and SET ARITHABORT to OFF.  
PRINT 'SET NUMERIC_ROUNDABORT OFF';  
PRINT 'SET ARITHABORT OFF';  
SET NUMERIC_ROUNDABORT OFF;  
SET ARITHABORT OFF;  
GO  
DECLARE @result DECIMAL(5, 2),  
   @value_1 DECIMAL(5, 4),   
   @value_2 DECIMAL(5, 4);  
SET @value_1 = 1.1234;  
SET @value_2 = 1.1234;  
SELECT @result = @value_1 + @value_2;  
SELECT @result;  
GO  

Ayrıca Bkz.

Veri Türleri (Transact-SQL)
SET Deyimleri (Transact-SQL)
ARITHABORT SETI (Transact-SQL)