第 5 章 事务和游标

事务:就是由若干条T-SQL语句组成的作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体使用,要么全部执行完成,要么全部撤销。          事务是一个不可分割的工作逻辑单元。

   事务的执行方式分为三种:  

1.显示事务:即有明确的开始(begin),结束(commit)以及撤销(rollback);  

2.自动提交事务:对数据进行增删改等操作,如果出现错误,操作将会被自动取消;  

3.隐式事务:当事务提交或回滚后,自动开始的事务

 游标:是一种能从包括多条数据记录的结果集中每次提取一条记录的机制

   使用游标可以实现:

    1. 允许定位到结果集中的特定行

    2.  从结果集的当前位置检索一行或多行数据

    3.  支持对结果集中当前位置的行进行修改

操作如下:

/*--事务--*/
--创建表
create table bank
(
    customerld int primary key identity(1,1),
    customername char(10),
    currentmoney money,
    check(currentmoney>=1)
)
go
--添加数据
insert into bank values('张三',1000)
insert into bank values('李四',1)
go
--开启事务
begin tran bank
--定义接受错误的变量
declare @a int
--更新数据
update bank set currentmoney=currentmoney-1000 where customername='张三'
set @a = @a+@@ERROR
update bank set currentmoney=currentmoney+1000 where customername='李四'
set @a = @a+@@ERROR

if @a=0
begin
--没有错误,执行事务
commit tran
print '转账成功'
end
else
begin
--执行错误,回滚事务
rollback tran
print '转账失败'
end
select * from bank
go

 游标的使用:

    1.定义游标   declare 游标名 cursor scroll for  查询语句

      2.打开游标    open  游标名

      3.检索游标    fetch  游标名                                                                         

     4.使用完毕关闭游标     close 游标名                       

      5.释放游标     deallocate  游标名

操作如下:

/*--游标--*/
--定义游标
declare ha cursor scroll for select customername,currentmoney from bank
--使用游标
open ha
--定义一个变量,用来存放游标中读取出来的值
declare @name varchar(5) , @money money
--读取游标的第一行记录
fetch first from ha into @name,@money
--循环读取游标中的记录
while @@FETCH_STATUS=0
begin
print @name+'的余额为:'+convert(varchar(max),@money)+'元'
--读取游标的下一行记录
fetch next from ha into @name,@money
end
--关闭游标
close ha
--释放游标
deallocate ha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值