gpt4 book ai didi

tsql - ARITHABORT,ARITHIGNORE-我需要重新打开它们吗?

转载 作者:行者123 更新时间:2023-12-03 07:43:19 27 4
gpt4 key购买 nike

这可能从根本上来说是愚蠢的,但是这里有:

我有一个存储过程,只需要运行它就不会引发溢出错误。万一发生溢出,我对NULL感到满意。

我看到它建议整个互联网(例如herehere)都可以使用

SET ARITHABORT OFF;
SET ARITHIGNORE ON;

很好,但是我应该在SP结束时重新打开它们吗?
SET ARITHABORT ON;
SET ARITHIGNORE OFF;

像这样?这些甚至是默认值吗?

另外,我是否需要两个开关才能使其忽略溢出错误(在我的情况下,尝试在SMALLINT字段中放入“606006000”)?

使用Azure DB v12。

最佳答案

有关这些设置的一些信息。默认情况下均为true。

设置ARITHIGNORE:
SET ARITHIGNORE设置仅控制是否返回错误消息。不管此设置如何,SQL Server在涉及溢出或零除错误的计算中返回NULL

设置ARITHABORT:
SET ARITHABORT设置可用于确定查询是否终止

此外,这是MSDN关于这些更多的内容。

This setting does not affect errors occurring during INSERT, UPDATE, and DELETE statements. If either SET ARITHABORT or SET ARITHIGNORE is OFF and SET ANSI_WARNINGS is ON, SQL Server still returns an error message when encountering divide-by-zero or overflow errors.



我做了一些测试,看来SET ARITHIGNORE OFF设置仅足以满足您所需的行为。

此外,您还需要设置SET_ANSI_WARNINGS_OFF,否则将抛出错误
SET ARITHABORT OFF
--SET ARITHIGNORE OFF
SET ANSI_WARNINGS OFF

select 1/0

declare @a tinyint
set @a=10000
select @a

关于tsql - ARITHABORT,ARITHIGNORE-我需要重新打开它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com