SET ARITHIGNORE (Transact-SQL)

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

控制在查詢期間,是從溢位或除以零的錯誤傳回錯誤訊息。

主題連結圖示Transact-SQL 語法慣例

Syntax

-- Syntax for SQL Server and Azure SQL Database

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

SET ARITHIGNORE OFF

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

備註

SET ARITHIGNORE 設定只會控制是否傳回錯誤訊息。 不論此設定為何,SQL Server在涉及溢位或零除錯誤的計算中傳回 Null。 您可以利用 SET ARITHABORT 設定來判斷查詢是否終止。 這項設定不會影響 INSERT、UPDATE 和 DELETE 陳述式期間所發生的錯誤。

如果 SET ARITHABORT 或 SET ARITHIGNORE 為 OFF,且 SET ANSI_WARNINGS為 ON,SQL Server在遇到零除或溢位錯誤時仍會傳回錯誤訊息。

SET ARITHIGNORE 的設定是在執行階段進行設定,而不是在剖析階段進行設定。

若要檢視此設定的目前設定,請執行下列查詢。

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

權限

需要 public 角色中的成員資格。

範例

下列範例會示範如何搭配這兩類查詢錯誤來使用這兩個 SET ARITHIGNORE 設定。

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  

範例:Azure Synapse分析和分析平臺系統 (PDW)

下列範例會示範除以零和溢位錯誤。 這個範例不會傳回這些錯誤的錯誤訊息,因為 ARITHIGNORE 是 OFF。

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

另請參閱

SET 陳述式 (Transact-SQL)
SET ARITHABORT (Transact-SQL)