首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SET ANSI_WARNINGS OFF的范围

SET ANSI_WARNINGS OFF的范围
EN

Stack Overflow用户
提问于 2011-08-09 05:51:31
回答 2查看 17K关注 0票数 5

如果我在一个存储过程中使用SET ANSI_WARNINGS OFF来消除警告,那么它只会影响该存储过程,而不会影响其他存储过程,这意味着在其他存储过程中,ANSI_WARNINGS仍然有效。如果我想对所有存储过程都关闭它,该怎么办?为什么它是默认的?我怎么会知道呢?

sql server中的其他设置(例如NOCOUNT)也是这样工作的吗?

非常感谢。

如果有人能与我分享关于这些设置的共同特征的文章,那就太好了。

EN

回答 2

Stack Overflow用户

发布于 2012-04-12 21:55:39

可能值得指出的是,它不仅不会影响其他存储过程,而且只会影响SET操作之后的语句

例如,运行此命令,您将看到该选项被关闭,然后打开,然后再次关闭。

代码语言:javascript
复制
CREATE TABLE test
(
    intvalue int NULL
) 
INSERT INTO test VALUES (1)
INSERT INTO test VALUES (NULL)
SET ANSI_WARNINGS OFF
SELECT COUNT(intvalue) FROM test
-- (1 row(s) affected)
SET ANSI_WARNINGS ON
SELECT COUNT(intvalue) FROM test
-- (1 row(s) affected)
-- Warning: Null value is eliminated by an aggregate or other SET operation.
SET ANSI_WARNINGS OFF
SELECT COUNT(intvalue) FROM test
-- (1 row(s) affected)
DROP TABLE test
票数 4
EN

Stack Overflow用户

发布于 2011-08-09 15:17:30

来自BOL:

SQL Server包括ANSI_WARNINGS数据库选项。这相当于设置ANSI_WARNINGS。当SET ANSI_WARNINGS为ON时,将在被零除、字符串对于数据库列太大以及其他类似错误中引发错误或警告。当SET ANSI_WARNINGS处于禁用状态时,不会引发这些错误和警告。在模型数据库中,SET ANSI_WARNINGS的默认值为OFF。如果未指定,则应用ANSI_WARNINGS的设置。如果SET ANSI_WARNINGS设置为OFF,SQL Server将使用sys.databases目录视图中is_ansi_warnings_on列的值。

您可以在BOL ( Management Studio中的F1)或MSDN http://msdn.microsoft.com/en-us/library/ms190368.aspx上阅读有关它的信息

NOCOUNT的工作原理是一样的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6989051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档