Sdílet prostřednictvím


NASTAVTE 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ž 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)