Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Specifikuje úroveň hlášení chyb generovanou při zaokrouhlování výrazu způsobuje ztrátu přesnosti.
Syntaxe
SET NUMERIC_ROUNDABORT { ON | OFF }
Poznámky
Když je SET NUMERIC_ROUNDABORT ZAPNUTO, chyba vzniká po ztrátě přesnosti ve výrazu. Pokud je nastavení na VYPNUTO, ztráty přesnosti nevytvářejí chybové zprávy. Výsledek je zaokrouhlen na přesnost sloupce nebo proměnné, která výsledek uchovává.
Ztráta přesnosti nastává, když se pokusíte uložit hodnotu s pevnou přesností do sloupce nebo proměnné s menší přesností.
Pokud je SET NUMERIC_ROUNDABORT ZAPNUTO, SET ARITHABORT určuje závažnost generované chyby. Tato tabulka ukazuje účinky těchto dvou nastavení při ztrátě přesnosti.
| Setting | NASTAV NUMERIC_ROUNDABORT NA | VYRAZTE NUMERIC_ROUNDABORT |
|---|---|---|
| NASTAVTE ARITHABORT NA | Generuje se chyba; Žádné výsledky nebyly vráceny. | Žádné chyby ani varování; výsledek je zaokrouhlený. |
| SPUSTIT ARITHABORT | Varování je vráceno; výraz vrací NULL. | Žádné chyby ani varování; výsledek je zaokrouhlený. |
Nastavení SET NUMERIC_ROUNDABORT je nastaveno při spuštění nebo běhu a nikoli při parse.
SET NUMERIC_ROUNDABORT musí být VYPNUTÝ, když vytváříte nebo měníte indexy ve vypočtených sloupcích nebo indexovaných zobrazeních. Pokud je SET NUMERIC_ROUNDABORT zapnutý, následující příkazy na tabulkách s indexy na vypočtených sloupcích nebo indexovaných pohledech selžou:
- CREATE
- Aktualizace
- INSERT
- DELETE
Pro více informací o povinných nastaveních možností SET s indexovanými zobrazeními a indexy ve vypočtených sloupcích viz Úvahy při použití příkazů SET.
Pro zobrazení aktuálního nastavení tohoto nastavení spusťte následující dotaz:
DECLARE @NUMERIC_ROUNDABORT VARCHAR(3) = 'OFF';
IF ( (8192 & @@OPTIONS) = 8192 ) SET @NUMERIC_ROUNDABORT = 'ON';
SELECT @NUMERIC_ROUNDABORT AS NUMERIC_ROUNDABORT;
Povolení
Vyžaduje členství ve veřejné roli .
Examples
Následující příklad ukazuje dvě hodnoty přesné na čtyři desetinná místa. Jsou přidávány a uloženy do proměnné, která je přesná na dvě desetinná místa. Výrazy ukazují účinky různých SET NUMERIC_ROUNDABORT prostředí a SET ARITHABORT prostředí.
-- 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
Viz také
Datové typy (Transact-SQL)
Příkazy SET (Transact-SQL)
PŘIPRAVTE ARITHABORT (Transact-SQL)