Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Określa poziom raportowania błędów generowany, gdy zaokrąglenie w wyrażeniu powoduje utratę precyzji.
Transact-SQL konwencje składni
Składnia
SET NUMERIC_ROUNDABORT { ON | OFF }
Uwagi
Gdy SET NUMERIC_ROUNDABORT jest WŁĄCZONY, po utracie precyzji w wyrażeniu generowany jest błąd. Jeśli ustawisz WYŁĄCZONE, utrata precyzji nie generuje komunikatów o błędach. Wynik jest zaokrąglany do precyzji kolumny lub zmiennej przechowującej wynik.
Utrata precyzji następuje, gdy próbujesz zapisać wartość o stałej precyzji w kolumnie lub zmiennej z mniejszą precyzją.
Jeśli USTAW NUMERIC_ROUNDABORT jest WŁĄCZONE, ZESTAW ARYTMACJA określa stopień wygenerowanego błędu. Ta tabela pokazuje skutki tych dwóch ustawień w przypadku utraty precyzji.
| Setting | USTAW NUMERIC_ROUNDABORT NA | RUSZ NUMERIC_ROUNDABORT |
|---|---|---|
| WŁĄCZ ARITHABORT | Generowany jest błąd; Nie otrzymałem żadnych wyników. | Brak błędów ani ostrzeżeń; Wynik jest zaokrąglony. |
| URUCHOM ARYTMUS | Ostrzeżenie zostało odwzajemnione; wyrażenie zwraca NULL. | Brak błędów ani ostrzeżeń; Wynik jest zaokrąglony. |
Ustawienie SET NUMERIC_ROUNDABORT jest ustawiane w czasie wykonywania lub działania, a nie podczas parsowania.
USTAW NUMERIC_ROUNDABORT musi być WYŁĄCZONY, gdy tworzysz lub zmieniasz indeksy w kolumnach obliczeniowych lub widokach indeksowanych. Jeśli SET NUMERIC_ROUNDABORT jest WŁĄCZONY, następujące instrukcje dotyczące tabel z indeksami na kolumnach obliczeniowych lub indeksowanych widokach zawodzą:
- CREATE
- Aktualizacja
- INSERT
- USUŃ
Aby uzyskać więcej informacji o wymaganych ustawieniach opcji SET z indeksowanymi widokami i indeksami w kolumnach obliczeniowych, zobacz Rozważania przy użyciu instrukcji SET.
Aby zobaczyć aktualne ustawienie dla tego ustawienia, wykonaj następujące zapytanie:
DECLARE @NUMERIC_ROUNDABORT VARCHAR(3) = 'OFF';
IF ( (8192 & @@OPTIONS) = 8192 ) SET @NUMERIC_ROUNDABORT = 'ON';
SELECT @NUMERIC_ROUNDABORT AS NUMERIC_ROUNDABORT;
Permissions
Wymaga członkostwa w publicznej roli .
Przykłady
Poniższy przykład pokazuje dwie wartości precyzyjne do czterech miejsc po przecinku. Są dodawane i przechowywane w zmiennej precyzyjnej co dwa miejsca po przecinku. Wyrazy pokazują efekty różnych SET NUMERIC_ROUNDABORTSET ARITHABORT i środowisk.
-- 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 też
typy danych (Transact-SQL)
INSTRUKCJE SET (Transact-SQL)
USTAW ARITHABORT (Transact-SQL)