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
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)