1. 程式人生 > >第 5 章 事務和遊標

第 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 = @

[email protected]@ERROR update bank set currentmoney=currentmoney+1000 where customername='李四' set @a = @[email protected]@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