事务:就是由若干条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