




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫原理與技術(shù)第二次試驗(yàn)課程名稱:數(shù)據(jù)庫原理與技術(shù)實(shí)驗(yàn)報(bào)告要求:1. 列出所有的SQL語句和源代碼;2. 程序要求有適當(dāng)?shù)淖⑨專?. 對(duì)數(shù)據(jù)完整性約束實(shí)施要求給出相應(yīng)的測(cè)試用例。4. 實(shí)驗(yàn)報(bào)告提交電子檔。實(shí)驗(yàn)內(nèi)容:存儲(chǔ)過程與觸發(fā)器1. 編寫一段程序,將每種玩具的價(jià)格提高¥0.5,直到玩具的平均價(jià)格接近$24.5為止。此外,任何玩具的最大價(jià)格不應(yīng)超過$53。在執(zhí)行語句前查詢:select * from Toys 結(jié)果如下執(zhí)行代碼如下: create procedure inprove_pri /*創(chuàng)建存儲(chǔ)過程*/asdeclare average money /*定義變量 */select a
2、verage=AVG(mToyRate) from Toys begin while average<24 /*為保證進(jìn)行最后一次循環(huán)后的average<24.5*/ begin update Toys set mToyRate=mToyRate+0.5where mToyRate<53 /* 循環(huán)條件 */ select average=AVG(mToyRate) from Toysendendgo exec inprove_priselect * from Toys 運(yùn)行結(jié)果: 再查詢avg(mToyRate) 代碼:select AVG(mToyRate) aaa fr
3、om Toys2. 創(chuàng)建一個(gè)稱為prcCharges的存儲(chǔ)過程,它返回某個(gè)定單號(hào)的裝運(yùn)費(fèi)用和包裝費(fèi)用。 create procedure prcCharges /*創(chuàng)建存儲(chǔ)過程 */cOrderNo char(6), /*定義變量 */mShippingCharges money output,mGiftWrapCharges money outputasbegin select mShippingCharges=mShippingCharges, /* 從Orders表中賦值給變量*/ mGiftWrapCharges=mGiftWrapCharges from Orders where c
4、OrderNo=cOrderNo /* 賦值條件 */ endgo declare mShippingCharges money, mGiftWrapCharges money exec prcCharges '000001',mShippingCharges output, /* 執(zhí)行該存儲(chǔ)過程 */ mGiftWrapCharges outputprint '000001訂單的裝運(yùn)費(fèi):'+convert(char(10),mShippingCharges) /*打印輸出 */print '000001訂單的包裝費(fèi):'+convert(char
5、(10),mGiftWrapCharges) 結(jié)果如下: 3. 創(chuàng)建一個(gè)稱為prcHandlingCharges的過程,它接收定單號(hào)并顯示經(jīng)營費(fèi)用。PrchandlingCharges過程應(yīng)使用prcCharges過程來得到裝運(yùn)費(fèi)和禮品包裝費(fèi)。提示:經(jīng)營費(fèi)用=裝運(yùn)費(fèi)+禮品包裝費(fèi)代碼如下:看Orders表的000001號(hào)訂單 select * from Orders create procedure prcHandlingCharges /* 定義存儲(chǔ)過程 */cOrderNo char(6), /* 定義訂變量 */RunningExpenses money outputasbegin dec
6、lare mShippingCharges money, mGiftWrapCharges moneyexec prcCharges cOrderNo, /* 引用prcCharges過程 */ mShippingCharges output, mGiftWrapCharges outputset RunningExpenses=mShippingCharges+mGiftWrapChargesendgo declare RunningExpenses moneyexec prcHandlingCharges '000001',RunningExpenses output /*
7、執(zhí)行存儲(chǔ)過*/print '訂單號(hào)的經(jīng)營費(fèi)用:'+convert(char(10),RunningExpenses)查詢結(jié)果如下: 4. 表PickofMonth中保存的是某年(iYear)某月(siMonth)某種玩具(cToyId)的銷售總量(iTotalSold)。創(chuàng)建一個(gè)存儲(chǔ)過程prcGenPickofMonth,根據(jù)給定的年份和月份生成表PickofMonth中相應(yīng)的數(shù)據(jù)。 CREATE PROCEDURE prcGenPickofMonth /*定義存儲(chǔ)過程*/year int, /*定義變量 */ month smallintasdeclare /*聲明 */so
8、ld INT, ID CHAR(6)SELECT ID = cToyId, sold = iTotalSold /*從PickOfMonth表中賦值給所定義的變量 */ FROM PickOfMonth where iYear=year and siMonth=month print CONVERT(VARCHAR(5), year)+'年'+CONVERT(VARCHAR(5), month) +'月的' print '玩具編號(hào):' + CONVERT(VARCHAR(6), ID) /*打印輸出 */ print '銷售額:'
9、 + CONVERT(VARCHAR(10), sold)GOEXECUTE prcGenPickofMonth 2001, 1 /*執(zhí)行給定的日期 */輸出結(jié)果:檢驗(yàn)語句:select * from PickOfMonth Where iYear=2001 and siMonth=15. 在OrderDetail上定義一個(gè)觸發(fā)器,當(dāng)向OrderDetail表中新增一條記錄時(shí),自動(dòng)修改Toys表中玩具的庫存數(shù)量(siToyQoh)。 CREATE TRIGGER TrOrderDetail /*定義觸發(fā)器 */ ON OrderDetail FOR INSERT ASDECLAREToyId
10、CHAR(6), /* 定義變量*/ToyQoh SMALLINT,Qty SMALLINT SELECT ToyId = cToyId, Qty = siQty FROM INSERTED SELECT ToyQoh = siToyQoh /*給變量賦值 */FROM Toys WHERE cToyId = ToyId /*賦值條件 */BEGIN UPDATE Toys /* 更新Toys表*/ SET siToyQoh = ToyQoh-Qty WHERE cToyId = ToyIdEND結(jié)果: 插入前查詢:執(zhí)行插入語句檢查:insert into Orders values('
11、;000012','05/12/2001','000002','000002','01',6,1.2500,'Y',62.2200,'05/23/2001')insert into OrderDetail values('000012','000007',2,'N',NULL,NULL,29.5000)然后再查詢Toys表:6. 在OrderDetail上定義一個(gè)觸發(fā)器,如果購物者改變了定單的數(shù)量,玩具的成本也自動(dòng)地改變。(提示:Toy cost = Quantity * Toy Rate) 創(chuàng)建觸發(fā)器代碼如下:create trigger CheckToyCost on OrderDetail for update /*創(chuàng)建觸發(fā)器 */asif update(siQty) /* 觸發(fā)條件*/begin update OrderDetail /*更新表 */ set mToyCost=siQty*mToyRate from OrderDetail,Toyswhere OrderDetail.cToyId = Toys.cToyId end檢驗(yàn):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 卓別林的課件
- 惠州市高三模擬數(shù)學(xué)試卷
- 湖南湘教版初一數(shù)學(xué)試卷
- 合肥一中數(shù)學(xué)試卷
- 河南體育單招數(shù)學(xué)試卷
- 健康童年暑期活動(dòng)課件
- 2020-2025年中國土壤化肥速測(cè)儀行業(yè)市場(chǎng)調(diào)研分析及投資前景預(yù)測(cè)報(bào)告
- 中國煤泥行業(yè)調(diào)查報(bào)告
- 遼寧省丹東市通遠(yuǎn)堡高中2025年物理高二下期末達(dá)標(biāo)測(cè)試試題含解析
- 銅排銅條加工項(xiàng)目可行性研究報(bào)告
- 禁止小孩進(jìn)入車間協(xié)議書
- 工程項(xiàng)目參與經(jīng)歷證明文件(8篇)
- 學(xué)校規(guī)范常規(guī)化管理
- 神經(jīng)外科危重病人搶救流程
- 倉庫精細(xì)化管理
- 參加活動(dòng)免責(zé)協(xié)議書
- 停車場(chǎng)規(guī)劃與運(yùn)營課件演示
- 玉林市天然氣專供管道(樟木鎮(zhèn)木榔村至朱珠垌段)遷改工程項(xiàng)目報(bào)告書
- 蒸汽生產(chǎn)銷售合同協(xié)議
- 裝修公司掛靠協(xié)議書范本
- 2025-2030中國水晶玻璃茶具行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及競(jìng)爭(zhēng)格局與投資前景研究報(bào)告
評(píng)論
0/150
提交評(píng)論