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

简介:

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_cyty 51CTO博客,原文链接:http://blog.51cto.com/aizzw/454934

相关文章
|
6月前
|
关系型数据库 MySQL
mysqldump unknown variable ‘set-gtid-purged=off‘ workbench
mysqldump unknown variable ‘set-gtid-purged=off‘ workbench
199 1
|
SQL 数据库
SQL点滴1—SET QUOTED_IDENTIFIER OFF语句的作用
  先看下面几个sql语句 代码  1 SET QUOTED_IDENTIFIER ON 2 SELECT * FROM "USER"    WHERE a='netasp'  3  4 SET QUOTED_IDENTIFIER ON 5 SELECT * FROM [USER] WH.
835 0
|
3天前
|
存储 SQL 关系型数据库
[MySQL]存储过程
本文介绍了存储过程的概念、优点和缺点,并通过具体示例详细讲解了存储过程的创建、使用和调用方法。此外,还介绍了游标的定义和使用,帮助读者更好地理解和应用存储过程。文章旨在为读者提供一个学习和使用存储过程的实用指南。
38 18
[MySQL]存储过程
|
25天前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
27 5
|
25天前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
39 3
|
25天前
|
存储 SQL 关系型数据库
MySQL 存储过程错误信息不打印在控制台
MySQL 存储过程错误信息不打印在控制台
36 1
|
3月前
|
存储 关系型数据库 MySQL
Mysql表结构同步存储过程(适用于模版表)
Mysql表结构同步存储过程(适用于模版表)
44 0
|
3月前
|
存储 SQL 关系型数据库
MySQL 创建存储过程注意项
MySQL 创建存储过程注意项
39 0