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

ON'da, SET NUMERIC_ROUNDABORT 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.

Eğer SETSET NUMERIC_ROUNDABORT ON'dursa, SET ARITHABORT oluşturulan hatanın şiddetini belirler. Bu tablo, hassasiyet kaybı yaşandığında bu iki ayarın etkilerini göstermektedir.

Setting SET NUMERIC_ROUNDABORT AÇIK SET NUMERIC_ROUNDABORT KAPALI
SET SET ARITHABORT AÇIK Hata üretilir; hiçbir sonuç seti gelmedi. Hata veya uyarı yok; Sonuç yuvarlanmıştır.
SET SET ARITHABORT KAPALI Uyarı geri dönüyor; ifade NULL döner. Hata veya uyarı yok; Sonuç yuvarlanmıştır.

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

SET NUMERIC_ROUNDABORT hesaplanan sütunlarda veya indekslenmiş görünümlerde endeks oluştururken veya değiştirirken KAPALı olmalı. Eğer SET NUMERIC_ROUNDABORT ON'dursa, hesaplanan sütunlarda veya indekslenmiş görünümlerde indeksli tablolarda aşağıdaki ifadeler başarısız olur:

  • YARATMAK
  • UPDATE
  • INSERT
  • DELETE

Hesaplanan sütunlarda indekslenmiş görünümler ve indekslerle ilgili gerekli SET seçenek ayarları hakkında daha fazla bilgi için Dikkate SETAlı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 İfadeler (Transact-SQL)
SET SET ARITHABORT (Transact-SQL)