第五章 事物和游标

一:事物

   定义:访问或修改数据库内容的程序的执行称为事物。(事物是一个不可分割的工作逻辑单元)

  作用:在数据库的实际应用中,有时候要把包含有多个步骤的指令当作一个整体来运行。这个整体要么全部运行成功,要么全部运行失败,这就要考虑事物。

 必备 属性(简称ACLD属性):原子性,一致性,隔离性,持久性(四属性解释 sqlserver数据库开发P93)

 三种模式:

              a.显示事务:用户使用T-SQL明确定义开始和结束的事务

                                   begin(开始)/commit(提交)/ rollback(回滚)   transaction

              b.自动提交事务

              c.隐式事务

 基本结构:
             --1、开启事务
             --2、定义变量,用于保存错误编号
             --3、对每一条sql语句进行错误捕捉
            --4、对错误编号进行处理
           -- 4.1成功,提交事务
           -- 4.2失败,回滚事务

(注:可以使用@error全局变量记录执行过程中出现的错误)

例:将100元从张三银行账户转账到李四账户

--开启事务
begin transaction bank   (可简写为begin tran bank )
--定义一个用于记录错误的变量
declare @error int
set @error=0--对变量进行赋值
update bank set C_Money=C_Money-100 where C_Name='张三'
  set  @error=@error+@@ERROR
 update bank set C_Money=C_Money+100 where C_Name='李四'
  set  @error=@error+@@ERROR
  if @error=0
  begin

       --执行出错,回滚事务
       commit tran
       print '转账成功!'
  end
  else
  begin

   --没有发现错误,提交事务
     rollback tran
       print '转账失败!'
  end
  select *from bank--查询转账后的结果


二:游标

    定义:游标是一种数据对象,使用它可以按行而不是按集合操纵数据

   作用:

    a.有些应用程序 ,不需要对查询得到的整行记录进行访问,而只需要其中的一行或者少量的几行数据,或者希望对其进行处理时,就需要考虑游标

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

可实现目标:

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

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

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

分类:T-SQL游标,APL游标,客户端游标

基本结构:

          1. 声明游标:declare  游标名  cursor[local(全局的)|global(局部的)]  scroll(双向滚动){forward only 是仅向后滚动,一般使用scroll(双向滚动}

              for  查询语句(select..........)

             [for 后可 增 删 改  ]

         2.打开游标:open  游标名

        3.检索游标:fetch 提取选项(frist,next等)  from 游标名

        4.关闭游标:close 游标名

       5.  释放游标:deallocate  游标名

例:查询账户余额

  --1.声明游标
   declare  youbiao  cursor scroll for select   C_Name,C_Money from bank
   --2.打开游标
   open youbiao   
       declare @name varchar(10),@money money

   --检索游标           
     fetch first from youbiao into @name,@money   

    --循环读取游标中的记录
        while(@@FETCH_STATUS=0)
        begin
          print @name+'的余额是:'+convert(varchar(10),@money)
               fetch next from youbiao into @name,@money   

        end

   --3.关闭游标
   close youbiao
   --4.释放游标
    deallocate youbiao

         

 

 

   

 

 

 

 

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值