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ž SET NUMERIC_ROUNDABORT je ON, 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 SETSET NUMERIC_ROUNDABORT je 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 | SET NUMERIC_ROUNDABORT ON | SET NUMERIC_ROUNDABORT VYPNUTO |
|---|---|---|
| SET SET ARITHABORT ON | Generuje se chyba; Žádné výsledky nebyly vráceny. | Žádné chyby ani varování; výsledek je zaokrouhlený. |
| SET SET ARITHABORT VYPNOUT | Varování je vráceno; výraz vrací NULL. | Žádné chyby ani varování; výsledek je zaokrouhlený. |
Nastavení je SET NUMERIC_ROUNDABORT nastaveno při spuštění nebo běhu a ne 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 SET NUMERIC_ROUNDABORT je ON, následující tvrzení o tabulkách s indexy na vypočtených sloupcích nebo indexovaných pohledech selhávají:
- CREATE
- UPDATE
- INSERT
- DELETE
Pro více informací o požadovaných SET nastaveních možností 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)
SET Příkazy (Transact-SQL)
SET
SET ARITHABORT (Transact-SQL)