SET ARITHIGNORE (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

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

Transact-SQL 語法慣例 (部分機器翻譯)

Syntax

-- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric

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

SET ARITHIGNORE OFF

注意

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 Analytics 和 Analytics Platform System (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)