SET NUMERIC_ROUNDABORT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Specifikuje úroveň hlášení chyb generovanou při zaokrouhlování výrazu způsobuje ztrátu přesnosti.

Transact-SQL konvence syntaxe

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)