为什么我们在存储过程中使用以下语句?

时间:2011-06-29 10:27:58

标签: sql sql-server-2008

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

请有人解释我们为何使用上述陈述。

4 个答案:

答案 0 :(得分:1)

SET ANSI_NULLS

此设置可以使用等于运算符而不仅仅是NULL运算符进行IS [NOT] NULL比较。

-- when ON this is perfectly valid comparison
Col = NULL
-- when OFF only this is valid
Col IS NULL

SET QUOTED_IDENTIFIER

来自MSDN / Books在线的这个例子将阐明这一点:

SET QUOTED_IDENTIFIER OFF
GO
-- An attempt to create a table with a reserved keyword as a name
-- should fail.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL);
GO

SET QUOTED_IDENTIFIER ON;
GO

-- Will succeed.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL);
GO

答案 1 :(得分:1)

答案 2 :(得分:0)

ANSI NULLS

的说明

QUOTED IDENTIFIER

的说明

答案 3 :(得分:0)

创建或更改查询分析器中的存储过程,用户定义函数等SQL对象时,会使用以下带有前缀和后缀的SQL命令创建它。

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO--SQL PROCEDURE, SQL FUNCTIONS, SQL OBJECTGO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

ANSI NULL ON / OFF: 此选项指定ANSI NULL比较的设置。启用此选项后,任何将值与null进行比较的查询都将返回0.禁用时,将值与null进行比较的任何查询都将返回空值。

QUOTED IDENTIFIER ON / OFF: 此选项指定双引号的使用设置。启用此选项后,双引号将用作SQL Server标识符(对象名称)的一部分。这在标识符也是SQL Server保留字的情况下非常有用。