Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

SET NUMERIC_ROUNDABORT (Transact-SQL)

Especifica el nivel de informes de error generados cuando el redondeo en una expresión produce pérdida de precisión.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL (Transact-SQL)

SET NUMERIC_ROUNDABORT { ON | OFF } 

Cuando SET NUMERIC_ROUNDABORT es ON, después de producirse una pérdida de precisión en una expresión se genera un error. Cuando es OFF, las pérdidas de precisión no generan mensajes de error y el resultado se redondea con la precisión de la columna o variable que lo almacena.

La pérdida de precisión aparece cuando se intenta almacenar un valor de precisión fija en una columna o variable con precisión inferior.

Si SET NUMERIC_ROUNDABORT es ON, SET ARITHABORT determina la gravedad del error generado. Esta tabla muestra los efectos de los dos valores cuando se produce una pérdida de precisión.

Configuración

SET NUMERIC_ROUNDABORT ON

SET NUMERIC_ROUNDABORT OFF

SET ARITHABORT ON

Se genera un error y no se devuelve ningún conjunto de resultados.

No se genera ningún error ni advertencia y el resultado se redondea.

SET ARITHABORT OFF

Se genera una advertencia y la expresión devuelve NULL.

No se genera ningún error ni advertencia y el resultado se redondea.

La opción SET NUMERIC_ROUNDABORT se establece en tiempo de ejecución, no en tiempo de análisis.

SET NUMERIC_ROUNDABORT debe ser OFF al crear o cambiar índices en columnas calculadas o vistas indizadas. Si SET NUMERIC_ROUNDABORT es ON, provocarán errores las instrucciones CREATE, UPDATE, INSERT y DELETE en tablas con índices en columnas calculadas y vistas indizadas. Para obtener más información acerca de las configuraciones de las opciones SET requeridas con vistas indizadas e índices en columnas calculadas, vea el apartado relativo a las consideraciones al utilizar las instrucciones SET en Instrucciones SET (Transact-SQL).

Debe pertenecer al rol public.

En este ejemplo se suman dos valores con precisión de cuatro posiciones decimales y se almacena el resultado en una variable con precisión de dos posiciones decimales. Las expresiones demuestran los efectos de las diferentes configuraciones de SET NUMERIC_ROUNDABORT y SET ARITHABORT.

-- 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
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.