SET NUMERIC_ROUNDABORT (Transact-SQL)
Określa poziom raportowania błędów generowanych podczas zaokrąglania w wyrażenie powoduje utratę precyzji.
SET NUMERIC_ROUNDABORT { ON | OFF }
Remarks
Gdy NUMERIC_ROUNDABORT zestaw jest włączone, zostanie wygenerowany błąd, po wystąpieniu utratę precyzji w wyrażeniu.Gdy OFF, strat dokładność nie generują komunikaty o błędach i wynik jest zaokrąglana do precyzji kolumna lub zmiennej przechowywanie wyników.
Utratę precyzji występuje podczas próby przechowywania wartości z dokładnością do środka kolumna lub zmienna o mniejsza precyzja.
Jeśli NUMERIC_ROUNDABORT zestaw jest włączone, zestaw ARITHABORT określa wygenerowany błąd.W poniższej tabela pokazano występuje wpływu tych dwóch ustawień podczas utratę precyzji.
Ustawienie |
ZESTAW NUMERIC_ROUNDABORT DALEJ |
ZESTAW NUMERIC_ROUNDABORT WYŁĄCZONE |
---|---|---|
ZESTAW ARITHABORT DALEJ |
Zwracany zestaw wyników nie zostanie wygenerowany błąd. |
Nie błędów lub ostrzeżeń; wynik jest zaokrąglany. |
ZESTAW ARITHABORT WYŁĄCZONE |
Ostrzeżenie jest zwracany; wyrażenie zwróci wartość NULL. |
Nie błędów lub ostrzeżeń; wynik jest zaokrąglany. |
Ustawiono zestaw NUMERIC_ROUNDABORT na wykonać lub uruchomić czas, a nie w czasie analizowania.
zestaw NUMERIC_ROUNDABORT musi być wyłączona podczas tworzenia lub zmieniania indeksów dla kolumny obliczanej lub widoków indeksowanych.zestaw NUMERIC_ROUNDABORT jest włączone, nie będzie instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoków indeksowanych.Aby uzyskać więcej informacji dotyczących wymaganych ustawień opcji zestaw z widoków indeksowanych i indeksów na kolumny obliczane zobacz "Zagadnienia podczas podczas Użyj zestaw deklaracji" w SET (Transact-SQL).
Uprawnienia
Członkostwo w grupie wymaga publiczne roli.
Przykłady
W poniższym przykładzie przedstawiono dwie wartości z dokładnością do czterech miejsc dziesiętnych, które są dodawane i zapisany w zmiennej z dokładnością do dwóch miejsc po przecinku.Efekty różnych wykazać wyrażenia SET NUMERIC_ROUNDABORT i SET ARITHABORT ustawienia.
-- 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