如果我有 SET ANSI_WARNINGS OFF
在一个存储过程中去掉警告,只对该存储过程生效,对其他存储过程没有影响,也就是说在其他存储过程中,ANSI_WARNINGS
还在。
如果我想为所有存储过程关闭它怎么办?
为什么默认开启?我怎么会知道?
sql server 中的其他设置(例如, NOCOUNT
)是否以相同的方式工作?
非常感谢。
如果有人可以与我分享有关这些设置的共同特征的文章,那就太好了。
最佳答案
可能值得指出的是,它不仅不会影响其他存储过程,它只会影响 SET 操作之后的语句
例如运行此命令,您将看到该选项已关闭,然后打开,然后再次关闭。
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
关于sql-server - SET ANSI_WARNINGS OFF 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989051/