您的位置:首页 > 数据库

SQL存储过程中的几个常见设定SET QUOTED_IDENTIFIER/NOCOUNT/XACT_ABORT ON/OFF

2010-12-14 10:50 288 查看
1.存储过程的开头结尾 SET QUOTED_IDENTIFIER ON/OFF

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

.......

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

简单的说:SET QUOTED_IDENTIFIER ON/OFF

SET QUOTED_IDENTIFIER ON 这种情况,我们可以使用关键字("select" "update" 等)作为对象名(表名)

而SET QUOTED_IDENTIFIER ON 这种情况,我们不可以这么使用,因为系统会解析"select","update"等为关键字

一般的情况用不着,除非你想要把对象名称定义成这样

2.SET ANSI_NULLS {ON | OFF}

指定在对空值使用等于 (=) 和不等于 (<>) 比较运算符时,这些运算符的 SQL-92 遵从行为。

SQL-92 标准要求对空值的等于 (=) 或不等于 (<>) 比较取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中存在空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中存在非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍返回零行。

当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中含有空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中含有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有非 XYZ 值和非 NULL的行。

3.存储过程中的 SET NOCOUNT ON 什么意思?

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数,在消息栏看)。当 SET NOCOUNT 为 OFF 时,返回计数。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

4.SET XACT_ABORT 为 ON/OFF

当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。

当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。

编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
本文出自 “idyllic” 博客,请务必保留此出处http://aizzw.blog.51cto.com/440409/454934
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: