sql-server - SET ANSI_WARNINGS OFF 的范围

标签 sql-server

如果我有 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/

相关文章:

sql-server - 将数据从服务器上的 SQL 数据库导入到本地主机上的 SQL 数据库

sql-server - 在单个构建中创建所有 SQL Server 版本的 dacpac 文件

c# - 每个 HTTP 请求多少个 SQL 查询是最佳的?

sql - 创建一个只有1个数据库权限的用户

java - SQL异常仅发生在三台服务器之一上

sql - 从 CSV 文件批量插入 - 跳过重复项

sql-server - 如何在sql中将分钟分为天、小时和分钟

asp.net - SQL Server集成身份验证模式

sql-server - 使用关系表 MS-SQL 过滤表

SQL 服务器 : is there a way to insert into a table values using both SELECT and VALUES at the same time?