Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Megadja a hibajelentés szintjét, amely akkor keletkezik, amikor egy kifejezésben a kerekítés pontosságvesztést okoz.
Transact-SQL szintaxis konvenciók
Szemantika
SET NUMERIC_ROUNDABORT { ON | OFF }
Megjegyzések
Amikor a SET NUMERIC_ROUNDABORT ON, hiba keletkezik, miután egy kifejezésben a pontosság csökken. Ha OFF beállításra állítva, a pontosságvesztés nem generál hibaüzenetet. Az eredményt az oszlop vagy változó pontosságára kerekítik, amely az eredményt tárolja.
A pontosságvesztés akkor következik be, amikor egy fix pontossággal rendelkező értéket próbálsz tárolni egy oszlopban vagy változóban, ahol kevesebb pontossággal van.
Ha a SET NUMERIC_ROUNDABORT ON, akkor az ARITHABORT halmaz határozza meg a generált hiba súlyosságát. Ez a táblázat bemutatja ezeknek a beállításoknak a hatásait, amikor a pontosság csökken.
| Setting | BEKAPCSOLD NUMERIC_ROUNDABORT | INDULJ NUMERIC_ROUNDABORT |
|---|---|---|
| ÁLLÍTSD BE AZ ARITHABORT BEKAPCSOLÁST | Hiba keletkezik; Nem érkezett eredmény. | Nincsenek hibák vagy figyelmeztetések; Az eredmény lekerekítve van. |
| INDÍTSD EL ARITHABORTOT | Figyelmeztetés érkezik; az kifejezés NULL-t ad. | Nincsenek hibák vagy figyelmeztetések; Az eredmény lekerekítve van. |
A SET NUMERIC_ROUNDABORT beállítása végrehajtási vagy futásidőben van beállítva, nem parze-időben.
A SET NUMERIC_ROUNDABORT KI kell kapcsolva, amikor indexeket hozol létre vagy változtatsz számítási oszlopokon vagy indexelt nézetekben. Ha a SET NUMERIC_ROUNDABORT ON, a következő utasítások azokon a táblázatokban, amelyek indexeik számított oszlopokon vagy indexelt nézeteken vannak, meghibásodnak:
- KÉSZÍTS
- Frissítés
- INSERT
- töröl
További információért a szükséges SET opció beállításokról indexelt nézetekkel és számolt oszlopokon található indexekkel lásd: Figyelembe vételek a SET állítások használatakor című részben.
A jelenlegi beállítás megtekintéséhez futtasd le a következő lekérdezést:
DECLARE @NUMERIC_ROUNDABORT VARCHAR(3) = 'OFF';
IF ( (8192 & @@OPTIONS) = 8192 ) SET @NUMERIC_ROUNDABORT = 'ON';
SELECT @NUMERIC_ROUNDABORT AS NUMERIC_ROUNDABORT;
Permissions
A nyilvános szerepkör tagságát igényli.
Példák
A következő példa két értéket mutat be, amelyek négy tizedesszámra pontosak. Hozzáadják és tárolják őket egy változóban, amely két tizedesjegyhez mért pontos. A kifejezések bemutatják a különböző SET NUMERIC_ROUNDABORT és SET ARITHABORT környezetek hatását.
-- 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
Lásd még:
adattípusok (Transact-SQL)
SET-utasítások (Transact-SQL)
ARITHABORT BEÁLLÍTÁSA (Transact-SQL)