Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft 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)