ZESTAW NUMERIC_ROUNDABORT (Transact-SQL)
Określa poziom wysyłania raportów o błędach wygenerowanych zaokrąglania w wyrażenie powoduje utratę precyzji.
Składnia
SET NUMERIC_ROUNDABORT { ON | OFF }
Uwagi
Gdy ustawienie NUMERIC_ROUNDABORT jest włączone, zostanie wygenerowany błąd, po wystąpieniu utratę precyzji w wyrażenie.OFF, nie generują straty precision jest zaokrąglana komunikaty o błędach i wynik precyzji kolumna lub zmiennej przechowywanie wyników.
Utratę precyzji występuje, gdy próby przechowywania wartości, z dokładnością do środka w kolumna lub zmiennej z mniejszą dokładnooć.
Jeśli ustawienie NUMERIC_ROUNDABORT jest włączone, ustawienie ARITHABORT określa ważności wygenerowany błąd.W tej tabela przedstawiono efekty te dwa ustawienia po wystąpieniu utratę precyzji.
Ustawienie |
SET NUMERIC_ROUNDABORT ON |
ZESTAW NUMERIC_ROUNDABORT, WYŁĄCZANIE |
---|---|---|
SET ARITHABORT ON |
Zostanie wygenerowany błąd; nie zestaw wyników zwrócone. |
Nie błędy lub ostrzeżenia; wynik jest zaokrąglany. |
ZESTAW ARITHABORT, WYŁĄCZANIE |
Ostrzeżenie jest zwracany; wyrażenie zwraca wartość NULL. |
Nie błędy lub ostrzeżenia; wynik jest zaokrąglany. |
Ustawienie ustawianie NUMERIC_ROUNDABORT jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.
Ustaw NUMERIC_ROUNDABORT musi być wyłączona podczas tworzenia lub zmieniania indeksów dla kolumny obliczanej lub widoki indeksowane.Jeśli ustawienie NUMERIC_ROUNDABORT jest włączone, instrukcji CREATE, UPDATE, INSERT i DELETE na tabelach z indeksów dla kolumny obliczanej lub widoki indeksowane nie powiedzie się.Aby uzyskać więcej informacji o wymagane ustawienia opcji zestaw Widoki indeksowane i indeksy kolumny obliczane zobacz "Zagadnienia podczas możesz użycia zestawu sprawozdań" in ZESTAW instrukcji (Transact-SQL).
Uprawnienia
Wymaga członkostwa w public rolę.
Przykłady
Poniższy przykład przedstawia dwie wartości z dokładnością do czterech miejsc dziesiętnych, które są dodawane i przechowywane w zmiennej z dokładnością do dwóch miejsc dziesiętnych.Wyrażenia wykazać wpływ różnych 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
Zobacz także