SET NUMERIC_ROUNDABORT (Transact-SQL)

Określa poziom raportowania błędów generowanych podczas zaokrąglania w wyrażenie powoduje utratę precyzji.

Topic link iconKonwencje składni języka Transact-SQL

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