




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5次作業(yè)——事務(wù)、游標(biāo)、自定義函數(shù)一、環(huán)境運(yùn)行SQLServer,并已經(jīng)創(chuàng)建名為student數(shù)據(jù)庫(kù)、“學(xué)生信息”表、“課程”表、“學(xué)生成績(jī)”表。二、實(shí)訓(xùn)內(nèi)容1、事務(wù)(1)Alice和Bob分別有銀行賬號(hào)A、B,分別用表a、表b表示,這2個(gè)表都只有1個(gè)字段amount,表示余額。現(xiàn)在需要從Alice向Bob轉(zhuǎn)賬制定金額,要求轉(zhuǎn)賬過(guò)程中不能出現(xiàn)錯(cuò)誤,而且不管轉(zhuǎn)賬是否成功,都扣除Alice賬號(hào)1元錢的手續(xù)費(fèi)。(2)amount字段上的約束條件是余額不能小于0declare@xmoneymoney,@err1int,@err2intset@xmoney=300--指定轉(zhuǎn)賬金額為300begintransaction updateA setamount=amount-1--扣除手續(xù)費(fèi) set@err1=@err1+@@ERROR--記錄上述update可能出現(xiàn)的錯(cuò)誤 savetransactiontransfer--設(shè)置保存點(diǎn)transfer updateA setamount=amount-@xmoney--從賬號(hào)A中扣除金額 set@err2=@err2+@@ERROR--記錄上述update可能出錯(cuò)的情況 updateB setamount=amount+@xmoney--想賬號(hào)B中轉(zhuǎn)入金額 set@err2=@err2+@@error if@err1!=0--如果扣除手續(xù)費(fèi)出現(xiàn)錯(cuò)誤 begin rollbacktransaction print'所有操作失敗' end elsebegin if@err2!=0--如果轉(zhuǎn)賬過(guò)程出現(xiàn)錯(cuò)誤 begin rollbacktransactiontransfer--回滾到保存點(diǎn)transfer處 print'轉(zhuǎn)賬失敗,但手續(xù)費(fèi)已扣' end elsebegin committransaction--所有操作成功,提交事務(wù) print'轉(zhuǎn)賬成功' endendgo2、自定義函數(shù)(1)在student數(shù)據(jù)庫(kù)中,創(chuàng)建標(biāo)量函數(shù),統(tǒng)計(jì)“課程”表中總共有多少條門課程,寫出程序代碼。要求:在建立函數(shù)之前,為排除重名函數(shù),先判斷要?jiǎng)?chuàng)建的函數(shù)是否存在,如果存在則先刪除。 ifexists(selectnamefromsysobjectswherename='Ccount'andtype='FN')dropfunctiondbo.Ccountgocreatefunctiondbo.Ccount()returnsintasbegin declare@numint set@num=0 select@num=count(*) from學(xué)生課程_蒲強(qiáng)林 return@numendgo--調(diào)用函數(shù)查詢usestudentgodeclare@numintset@num=0set@num=dbo.Ccount()print'課程表中總共有:'+cast(@numaschar(1))+'門課程'go運(yùn)行結(jié)果截圖:(2)在student數(shù)據(jù)庫(kù)中,創(chuàng)建內(nèi)嵌表值函數(shù),該函數(shù)給出制定學(xué)生所選修課程記錄,即“學(xué)號(hào)”作為輸入?yún)?shù),寫出程序代碼。 ifexists(selectnamefromsysobjectswherename='Cchoose'andtype='FN')dropfunctiondbo.Cchoosegocreatefunctiondbo.Cchoose(@Cnameasnvarchar(20))returnstableasreturn(selecta.學(xué)號(hào) from學(xué)生成績(jī)_蒲強(qiáng)林a,學(xué)生課程_蒲強(qiáng)林b wherea.課程號(hào)=b.課程號(hào)andb.課程名稱=@Cname)go--調(diào)用函數(shù)查詢選修C語(yǔ)言情況usestudentgodeclare@Cnamenvarchar(20)set@Cname='C語(yǔ)言'select*fromdbo.Cchoose(@Cname)go運(yùn)行結(jié)果截圖:(3)在student數(shù)據(jù)庫(kù)中,創(chuàng)建多語(yǔ)句表值函數(shù),該函數(shù)可以查詢某門課程的選修情況,該函數(shù)接收輸入的“課程名稱”,通過(guò)查詢“課程”表和“學(xué)生成績(jī)”表返回該課程的選修情況,寫出程序代碼。 ifexists(selectnamefromsysobjectswherename='Cchoose1'andtype='FN')dropfunctiondbo.Cchoose1gocreatefunctiondbo.Cchoose1(@Cnameasnvarchar(20))returns@Cchoosetabletable(學(xué)號(hào)char(7))asbegin insert@Cchoosetable selecta.學(xué)號(hào) from學(xué)生成績(jī)_蒲強(qiáng)林a,學(xué)生課程_蒲強(qiáng)林b wherea.課程號(hào)=b.課程號(hào)andb.課程名稱=@Cname returnendgo--調(diào)用函數(shù)查詢學(xué)修C語(yǔ)言情況usestudentgodeclare@Cnamenvarchar(20)set@Cname='C語(yǔ)言'select*fromdbo.Cchoose1(@Cname)go運(yùn)行結(jié)果截圖:3、游標(biāo)使用游標(biāo)返回“課程”表中總共有多少條記錄,并查詢“課程”表中最后一條記錄,將最后一條記錄的“課程號(hào)”或者“課程名稱”修改一下。usestudentgodeclarecou_curscrollcursorforselect*from學(xué)生課程_蒲強(qiáng)林forupdateof課程名稱,課程號(hào)opencou_curdeclare@課程號(hào)char(7),@課程名稱nvarchar(20),@學(xué)分char(15),@先修課程char(7)declare@counumsmallintset@counum=0if@@ERROR=0begin fetchnextfromcou_curinto@課程號(hào),@課程名稱,@學(xué)分,@先修課程 while@@FETCH_STATUS=0 begin set@counum=@counum+1 fetchnextfromcou_curinto@課程號(hào),@課程名稱,@學(xué)分,@先修課程 endendprint'課程表中的課程總數(shù)為:'+cast(@counumasnchar(4))fetchpriorfromcou_curupdate學(xué)生課程_蒲強(qiáng)林set課程名稱='windows高級(jí)編程技術(shù)'wherecurrentofcou
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)銀行法律顧問(wèn)合同范本
- 勞務(wù)分包個(gè)人合同范本
- 中醫(yī)飲售賣合同范本
- 剩余產(chǎn)品合同范本
- 農(nóng)業(yè)土豆銷售合同范本
- 公務(wù)車服務(wù)合同范本
- 個(gè)人包車協(xié)議合同范本
- 制定企業(yè)合同范本
- 個(gè)人餐館轉(zhuǎn)讓合同范本
- 單位買車合同范例
- 大學(xué)學(xué)院學(xué)生獎(jiǎng)助資金及相關(guān)經(jīng)費(fèi)發(fā)放管理暫行辦法
- 2022蘇教版科學(xué)五年級(jí)下冊(cè)全冊(cè)優(yōu)質(zhì)教案教學(xué)設(shè)計(jì)
- 加油員的安全生產(chǎn)責(zé)任制
- 2023年R2移動(dòng)式壓力容器充裝操作證考試題及答案(完整版)
- 九年級(jí)物理實(shí)驗(yàn)記錄單
- 2022年湖北省高中學(xué)業(yè)水平考試真題-音樂(lè)學(xué)科
- 提高屋面防水施工質(zhì)量年QC成果
- 部編初中語(yǔ)文古詩(shī)詞按作者分類梳理
- 博朗IRT6520中文說(shuō)明書(shū)家用版
- 旅行社運(yùn)營(yíng)實(shí)務(wù)電子課件 1.1 初識(shí)旅行社
- 【讀書(shū)如熬粥閱讀答案】讀書(shū)如熬粥閱讀答案
評(píng)論
0/150
提交評(píng)論