第五章 事务和游标 总结

第五章 事务和游标

1.事务

事务是由若干条T-SQL指令组成的作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么全部执行完成,要么全部撤销

事务分为显式事务,自动提交事务和隐式事务三种,重点为显式事务

显式事务和另外两个事务不同的是显式事务需要明确定义开始(Begin transaction)和结束(Commit transaction或Rollback transaction)

事务必须具备四个属性,分别是原子性一致性隔离性永久性,简称ACID属性

例,用事务解决银行转账问题

begin transaction tran_bank  (开始一个事务)
declare @tran_error int  (定义一个变量用于记录错误 ) 
set @tran_error=0
update BankInfo set currentMoney=currentMoney-1000
where customerName='张三'
set @tran_error=@tran_error+@@ERROR
update BankInfo set currentMoney=currentMoney+1000
where customerName='李四'
set @tran_error=@tran_error+@@ERROR

if @tran_error<>0  (用if判断,如果错误不等于0则回滚事务取消交易,等于零则交易成功)
    begin
        rollback transaction
        print'转账失败,交易已取消!'
    end
else
    begin
        commit transaction
        print'交易成功!'
    end
go

2.游标

游标实际上是一种能从多条数据记录的结果及中每次提取记录的几只,有些应用程序不需要对查询得到的整个记录集进行访问,而要其中的一行或者少量的几行数据,或者希望对其进行处理时,就需要用到游标

游标的语法结构

DECLARE  cursor_name  游标名
CURSOR [LOCAL | GLOBAL]  全局或局部的
[FORWARD ONLY | SCROLL]  游标滚动方式
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]  游标读取方式
FOR SELECT_statements  查询语句
[FOR UPDATE [OF Column_name[,….N]]]  可更改字段

游标的使用,例

declare bank_cursor   声明游标

cursor scroll for select customerName,currentMoney from BankInfo

open bank_cursor  打开游标

declare @name varchar(10),@money money
fetch first from bank_cursor into @name,@money
while @@FETCH_STATUS=0  用while循环遍历游标中的所有数据
begin
    print @name+'的余额为'+convert(varchar(10),@money)
    fetch next from bank_cursor into @name,@money
end
close bank_cursor  关闭游标
deallocate bank_cursor  释放游标
go

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值