sql server存储过程注意点点

sql server存储过程是利用其提供的Transact-SQL语言所编写的程序。
它所遵循的几个原则:
 1)、变量说明
 2)、ANSI兼容的SQL命令(Select,Update….)
 3)、一般流程控制命令(if…else…、while….)
 4)、内部函数

它所需要注意的几个常用设置:
a). SET ANSI_NULLS {ON | OFF}
b). SET QUOTED_IDENTIFIER ON
这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 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 语句返回列中含有非空值的行。
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。

如果涉及到事务,事实上,在实际开发中这是不可避免的,我们应该备加小心:
c). BEGIN TRANSACTION 开始事务
d). COMMIT TRANSACTION 提交事务
e). ROLLBACK TRANSACTION 回滚事务
f). SET IMPLICIT_RANSACTION ON 隐式事务
脏读 (dirty read):一个事务读取了另一个事务尚未提交的更新,就叫做脏读。
不可重复读(nonrepeatable read):如果事务二能够看到事务一所提交的数据更新,就意味着出了不可重复读型事务缺陷。
幻影行(phantom rows):当一个事务的select语句返回的结果受到另一个事务的影响而发生改变的现象叫做幻影行。

执行事务的步骤
1.数据库开始状态
2.数据更新命令
3.记录事务日志
4.事务提交
5.更新数据文件
6.事务结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值