事務和游標

create database lession5
go
use lession5
go
create table bank(
    customerName char(10),--顧客姓名
    currentMoney Money  --當前余額

)
go
--添加檢查約束 賬戶余額不能少于1元
alter table bank add constraint CK_currentMoney check(currentMoney>=1)
go

--添加數(shù)據(jù)
insert into bank values('張三',1000)
insert into bank values('李四',1)

--轉(zhuǎn)賬測試 :張三轉(zhuǎn)賬1000元給李四
--張三賬戶少1000,李四多1000
use lession5
go
update bank set currentMoney=currentMoney-1000 where customerName='張三'
update bank set currentMoney=currentMoney+1000 where customerName='李四'
go

--再次查看轉(zhuǎn)賬后的結(jié)果
select * from bank
go



use lession5
go
--添加測試數(shù)據(jù)
insert into bank values('三毛',10000)
insert into bank values('小毛',1)

--開始一個事務
begin transaction tran_bank  --也可簡寫begin tran tran_bank
--定義一個用于記錄錯誤的變量
declare @tran_error int
set @tran_error = 0
--在三毛的賬戶減去
update bank set currentMoney=currentMoney-10000 where customerName='三毛'
set @tran_error = @tran_error + @@error
--在小毛的賬戶增加
update bank set currentMoney=currentMoney+10000 where customerName='小毛'
set @tran_error = @tran_error + @@error

if @tran_error <> 0
    begin
        --執(zhí)行出錯,回滾事務
        rollback transaction
        print '轉(zhuǎn)賬失敗,交易已取消'
    end
else 
    begin
        --沒有發(fā)現(xiàn)錯誤,提交事務
        commit transaction
        print '交易成功,已保存新數(shù)據(jù)'
    end
go
--定義一個名為stuInfo_cursor的可隨意滾動的游標
declare stuInfo_cursor cursor scroll for select * from StuInfo

--打開該游標
open stuInfo_cursor

--定義個變量,用于存放游標中讀取出來的值
declare @id int
declare @name nvarchar(10)
declare @sex char(2)
declare @classid int

--讀取游標的第一條記錄行,并存放在變量中
fetch first from stuInfo_cursor into @id,@name,@sex,@classid

--循環(huán)讀取游標中的記錄
print '讀取的數(shù)據(jù)如下:'
while(@@fetch_status = 0)
begin
    --用print輸出讀取的數(shù)據(jù)
    print '學號:'+convert(nvarchar,@id)
        + '姓名:'+@name 
        + '性別:'+@sex
        +'班級編號:' + convert(nvarchar,@classid)
    --讀取下一條記錄行
    fetch next from stuInfo_cursor into @id,@name,@sex,@classid
end
--讀取完成后關(guān)閉游標
close stuInfo_cursor
--刪除游標
deallocate stuInfo_cursor

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容