SET ARITHIGNORE (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Controla si se devuelven mensajes de error al producirse errores de desbordamiento o división por cero durante una consulta.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

-- Syntax for SQL Server and Azure SQL Database

SET ARITHIGNORE { ON | OFF }
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  

SET ARITHIGNORE OFF

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Comentarios

La opción SET ARITHIGNORE solo controla si se devuelve un mensaje de error. SQL Server devuelve NULL en un cálculo en que se invoca un error de desbordamiento o de división por cero con independencia de esta opción. La opción SET ARITHABORT se puede utilizar para determinar si la consulta ha finalizado o no. Esta opción no afecta a los errores producidos al ejecutar las instrucciones INSERT, UPDATE y DELETE.

Si SET ARITHABORT o SET ARITHIGNORE es OFF y SET ANSI_WARNINGS es ON, SQL Server devolverá un mensaje de error cuando haya errores de división por cero o desbordamiento.

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

Para ver la configuración actual de este valor, ejecute la consulta siguiente.

DECLARE @ARITHIGNORE VARCHAR(3) = 'OFF';  
IF ( (128 & @@OPTIONS) = 128 ) SET @ARITHIGNORE = 'ON';  
SELECT @ARITHIGNORE AS ARITHIGNORE;  

Permisos

Debe pertenecer al rol public.

Ejemplos

En el ejemplo siguiente se muestran las dos opciones de SET ARITHIGNORE con ambos tipos de errores de consulta.

SET ARITHABORT OFF;  
SET ANSI_WARNINGS OFF  
GO  
  
PRINT 'Setting ARITHIGNORE ON';  
GO  
-- SET ARITHIGNORE ON and testing.  
SET ARITHIGNORE ON;  
GO  
SELECT 1 / 0 AS DivideByZero;  
GO  
SELECT CAST(256 AS TINYINT) AS Overflow;  
GO  
  
PRINT 'Setting ARITHIGNORE OFF';  
GO  
-- SET ARITHIGNORE OFF and testing.  
SET ARITHIGNORE OFF;  
GO  
SELECT 1 / 0 AS DivideByZero;  
GO  
SELECT CAST(256 AS TINYINT) AS Overflow;  
GO  

Ejemplos: Azure Synapse Analytics y Almacenamiento de datos paralelos

En el siguiente ejemplo se muestran los errores de división entre cero y de desbordamiento. No se devuelve un mensaje de error relativo a estos errores porque ARITHIGNORE está establecido en OFF.

-- SET ARITHIGNORE OFF and testing.  
SET ARITHIGNORE OFF;  
SELECT 1 / 0 AS DivideByZero;  
SELECT CAST(256 AS TINYINT) AS Overflow;  

Consulte también

Instrucciones SET (Transact-SQL)
SET ARITHABORT (Transact-SQL)