SQL--存储过程中的几个常见设定
2014-03-28 22:44
197 查看
SQL存储过程中的几个常见设定SET QUOTED_IDENTIFIER/NOCOUNT/XACT_ABORT ON/OFF
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责。http://aizzw.blog.51cto.com/440409/454934
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 标准。使用 WHEREcolumn_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 的影响。
相关文章推荐
- SQL存储过程中的几个常见设定SET QUOTED_IDENTIFIER/NOCOUNT/XACT_ABORT ON/OFF
- SQL 中常见的系统存储过程
- sql T_sql 之存储过程的几个用法
- SQL 2008 R2 中 存储过程对于分号的几个奇怪截图
- 几种常见SQL分页存储过程方式效率比较
- 几个在MS SQL Server处理IP的函数/存储过程
- 数据库的几个问题存储过程触发器函数创建以及sql优化
- [PL/SQL] 请教大家一个问题,存储过程中需要几个commit?
- sql存储过程几个简单例子(一)
- sql存储过程几个简单例子
- SqlParameter设定的value值为0时、调用的存储过程获取到的值却为null解决方法
- sql存储过程几个简单例子(一)
- SQL 中常见的系统存储过程
- sql存储过程几个简单例子
- sql存储过程几个简单例子
- SQL常见的系统存储过程
- sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码
- SQL批量上传海量数据的存储过程
- 怎样调试T-SQL存储过程
- SQL 系统存储过程用法整理