版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
學(xué)期Oracle數(shù)據(jù)庫應(yīng)用技術(shù)實(shí)驗(yàn)報(bào)告選課序號:班 級:學(xué) 號:姓 名:指導(dǎo)教師: 史金余成 績:2017年月 日目 錄1.實(shí)驗(yàn)?zāi)康?.............................. 錯(cuò)誤!未定義書簽。2.實(shí)驗(yàn)內(nèi)容............................... 錯(cuò)誤!未定義書簽。觸發(fā)器設(shè)計(jì)........................... 錯(cuò)誤!未定義書簽。存儲過程、自定義函數(shù)設(shè)計(jì) ............. 錯(cuò)誤!未定義書簽。程序包設(shè)計(jì)........................... 錯(cuò)誤!未定義書簽。3.實(shí)驗(yàn)步驟............................... 錯(cuò)誤!未定義書簽。創(chuàng)建表空間RESTAURANT,創(chuàng)建用戶DINER..錯(cuò)誤!未定義書簽。創(chuàng)建餐飲系統(tǒng)數(shù)據(jù)庫的所有表,并向各表插入演示數(shù)據(jù)錯(cuò)誤!未定義書簽。完成【實(shí)驗(yàn)內(nèi)容】中的觸發(fā)器、存儲過程、函數(shù)和程序包等功能設(shè)計(jì),將程序腳本保存到文本文件中 ...... 錯(cuò)誤!未定義書簽。4.實(shí)驗(yàn)總結(jié)............................... 錯(cuò)誤!未定義書簽。PL/SQL程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康恼莆誔L/SQL程序設(shè)計(jì)基本技巧,包括基本數(shù)據(jù)類型、表類型、數(shù)組類型、匿名程序塊、控制語句、 PL/SQL中使用SQL語句、游標(biāo)、錯(cuò)誤處理等。熟悉和掌握PL/SQL中關(guān)于存儲過程、函數(shù)、包和觸發(fā)器程序設(shè)計(jì)技術(shù)。實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)平臺:PL/SQLDeveloper或Oracle的其它客戶端管理工具。某餐飲系統(tǒng)數(shù)據(jù)庫(加粗字段為主鍵,斜體字段為外鍵),請創(chuàng)建如下各數(shù)據(jù)表,并實(shí)現(xiàn)如下存儲過程、函數(shù)、包和觸發(fā)器等功能設(shè)計(jì),將程序腳本保存到文本文件中:1)菜肴類別表MK(菜肴類別編號MKid,菜肴類別名稱MkName),菜肴類別名稱:魚類、蔬菜類、涼菜類、肉類、主食類和酒水類等。2)菜單信息表MList(菜肴編號Mid,菜肴名稱Mname,菜肴類別MKid,菜肴單價(jià)Mprice,菜肴成本單價(jià)Mcost,更新日期Mdate)。3)餐臺類別表DK(餐臺類別編號DKid,餐臺類別名稱DkName),餐臺類別:包間和散臺等。4)餐臺信息表Dinfo(餐臺編號Did,餐臺名稱Dname,餐臺類別DKid,座位數(shù)Dseats,更新日期Ddate)。5)消費(fèi)單主表C(消費(fèi)單號Cid,餐臺編號Did,消費(fèi)開始時(shí)間StartTime,結(jié)賬時(shí)間EndTime,消費(fèi)金額合計(jì)Smoney,盈利金額合計(jì)SPsum),其中,消費(fèi)金額合計(jì)=消費(fèi)單明細(xì)表CList中該消費(fèi)單號的所有消費(fèi)記錄的消費(fèi)金額的合計(jì),即SUM(消費(fèi)金額)或SUM(菜肴單價(jià)×消費(fèi)數(shù)量),盈利金額合計(jì)=消費(fèi)單明細(xì)表CList中該消費(fèi)單號的所有消費(fèi)記錄的盈利合計(jì),即SUM((菜肴單價(jià)-菜肴成本單價(jià))×消費(fèi)數(shù)量)。6)消費(fèi)單明細(xì)表CList(消費(fèi)單號Cid,序號Sid,菜肴編號Mid,菜肴名稱Mname,消費(fèi)數(shù)量Cqty,菜肴單價(jià)Mprice,菜肴成本單價(jià)Mcost,消費(fèi)金額Cmoney),消費(fèi)金額=消費(fèi)數(shù)量×菜肴單價(jià);消費(fèi)數(shù)量為正數(shù)是正常點(diǎn)菜,消費(fèi)數(shù)量為負(fù)數(shù)是退菜,消費(fèi)數(shù)量為0是贈菜。觸發(fā)器設(shè)計(jì)為消費(fèi)單明細(xì)表CList定義一個(gè)觸發(fā)器,每插入(INSERT)一條消費(fèi)單明細(xì)記錄(消費(fèi)單號,序號,菜肴編號,消費(fèi)數(shù)量),自動根據(jù)菜肴編號從菜單信息表MList中讀取菜肴名稱Mname、菜肴單價(jià)Mprice、菜肴成本單價(jià)Mcost,然后計(jì)算其消費(fèi)金額(=消費(fèi)數(shù)量×菜肴單價(jià))、以及消費(fèi)單主表C的消費(fèi)金額合計(jì)、盈利金額合計(jì)。編寫相應(yīng)的插入語句(INSERT)和查詢語句(SELECT)測試該觸發(fā)器效果。 為消費(fèi)單明細(xì)表 CList定義一個(gè)觸發(fā)器,每更新 UPDATE一條消費(fèi)單明細(xì)表記錄,自動修改其消費(fèi)金額、以及消費(fèi)單主表 C的消費(fèi)金額合計(jì)、盈利金額合計(jì)。編寫相應(yīng)的更新語句( UPDATE)和查詢語句(SELECT)測試該觸發(fā)器效果。 為消費(fèi)單明細(xì)表 CList定義一個(gè)觸發(fā)器,每刪除 DELETE一條消費(fèi)單明細(xì)表記錄自動修改其消費(fèi)單主表 C的消費(fèi)金額合計(jì)、盈利金額合計(jì)。編寫相應(yīng)的刪除語句(DELETE)和查詢語句(SELECT)測試該觸發(fā)器效果。 將【】、【】、【】三個(gè)觸發(fā)器禁用 disable,重新編寫一個(gè)觸發(fā)器實(shí)現(xiàn)這三個(gè)觸發(fā)器的全部功能。編寫相應(yīng)的插入語句( INSERT)、更新語句(UPDATE)、刪除語句(DELETE)和查詢語句(SELECT)測試該觸發(fā)器效果。存儲過程、自定義函數(shù)設(shè)計(jì) 設(shè)計(jì)一個(gè)自定義函數(shù) fGetDTSum,實(shí)現(xiàn)統(tǒng)計(jì)某年份給定餐臺類別的成本金額合計(jì)的功能,輸入?yún)?shù)是統(tǒng)計(jì)年份和餐臺類別, 返回?cái)?shù)據(jù)是成本金額合計(jì)。成本金額=消費(fèi)數(shù)量×菜肴成本單價(jià)。求年份的函數(shù)為 EXTRACT(YEARFROM日期字段),本題:統(tǒng)計(jì)年份=EXTRACT(YEARFROMEndTime),EndTime為結(jié)賬時(shí)間字段。 設(shè)計(jì)一個(gè)存儲過程 pGetKindSum,實(shí)現(xiàn)統(tǒng)計(jì)某年份給定菜肴類別的盈利金額合計(jì)的功能,輸入?yún)?shù)是統(tǒng)計(jì)年份和菜肴類別, 輸出參數(shù)是盈利金額合計(jì)。盈利金額=消費(fèi)數(shù)量 ×(菜肴單價(jià)- 菜肴成本單價(jià))。 編寫一段匿名PL/SQL程序塊,調(diào)用函數(shù)fGetDTSum,輸出2013年餐臺類別名為“包間”的成本金額合計(jì);調(diào)用存儲過程 pGetKindSum,輸出2013年菜肴類別名為“魚類”的盈利金額合計(jì)。程序包設(shè)計(jì) 設(shè)計(jì)一個(gè)程序包,包名為 pkSUM,包括并實(shí)現(xiàn)【】和【】的函數(shù)及存儲過程功能,注意:先創(chuàng)建包頭 package,包頭創(chuàng)建成功后,再創(chuàng)建包體 packagebody。 設(shè)計(jì)一個(gè)匿名PL/SQL程序塊,參照【】調(diào)用【】中程序包的函數(shù)和存儲過程,輸出2013年餐臺類別名為“散臺”的成本金額合計(jì),輸出 2013年菜肴類別名為“蔬菜類”的盈利金額合計(jì)。3. 實(shí)驗(yàn)步驟(備注:如果用實(shí)驗(yàn)室微機(jī),請從【】開始做,登錄用戶 DINER改為stuXX)創(chuàng)建表空間RESTAURANT,創(chuàng)建用戶DINER用戶SYSTEM登錄Oracle 創(chuàng)建表空間RESTAURANT,大小10M。CREATETABLESPACERESTAURANTDATAFILE'F:\' SIZE10MDEFAULTSTORAGE(INITIAL 10KNEXT50KMINEXTENTS1MAXEXTENTS99PCTINCREASE10)ONLINE;創(chuàng)建用戶DINER,口令XXX,默認(rèn)表空間 RESTAURANT,給該用戶授予角色權(quán)限CONNECT、RESOURCE。CREATEUSERDINERIDENTIFIEDBY"wzl123" DEFAULTTABLESPACERESTAURANT;GRANTCONNECTODINER;GRANTRESOURCETODINER;創(chuàng)建餐飲系統(tǒng)數(shù)據(jù)庫的所有表,并向各表插入演示數(shù)據(jù)啟動PL/SQLDeveloper(或者啟動SQL*PLUS、EnterpriseManagerConsole、瀏覽器模式的EM(企業(yè)管理器)等工具均可以),用戶DINER登錄Oracle。創(chuàng)建實(shí)驗(yàn)內(nèi)容中的餐飲系統(tǒng)數(shù)據(jù)庫的所有表(菜肴類別表MK、菜單信息表MList、餐臺類別表DK、餐臺信息表Dinfo、消費(fèi)單主表C、消費(fèi)單明細(xì)表CList)。create table MK(MKid number,MkName varchar2(64),constraint pk_MKid primary key(MKid));create table MList(Mid number,Mname varchar2(64),MKid numberreferences MK(MKid),Mprice number(8,2),Mcost number(8,2),Mdate date,constraint pk_Mid primary key(Mid));create table DK(DKid number,DkName varchar2(64),constraint pk_DKid primary key(DKid));create table Dinfo (Did number,Dname varchar2(64),DKid numberreferences DK(DKid),Dseats number,Ddate date,constraint pk_Did primary key(Did));create table C(Cid number,Did numberreferences Dinfo (Did),StartTime date,EndTime date,Smoney number(8,2),SPsum number(8,2),constraint pk_Cid primary key(Cid));createtableCList(Sidnumber,CidnumberreferencesC(Cid),MidnumberreferencesMList(Mid),Mnamevarchar2(64),Cqtynumber,Mpricenumber(8,2),Mcostnumber(8,2),Cmoneynumber(8,2),constraintpk_Sidprimarykey(Sid)); 依次向菜肴類別表 MK、菜單信息表 MList、餐臺類別表 DK、餐臺信息表Dinfo插入足夠多的演示數(shù)據(jù)。insert into MKvalues(1,'魚類');insert into MKvalues(2,'蔬菜類');insert into MKvalues(3,'涼菜類');insertintoMKvalues(4,'肉類');insertintoMKvalues(5,'主食類');insertintoMKvalues(6,'酒水');insertintoMListvalues(1,'鯉魚',1,,,sysdate);insertintoMListvalues(2,'三文魚',1,,,sysdate);insertintoMListvalues(3,'白菜',2,,,sysdate);insertintoMListvalues(4,'土豆',2,,,sysdate);insertintoMListvalues(5,'油麥菜',2,,,sysdate);insertintoMListvalues(6,'涼拌黃瓜',3,,,sysdate);insertintoMListvalues(7,'雞肉',4,,,sysdate);insertintoMListvalues(8,'米飯',5,,,sysdate);insertintoMListvalues(9,'二鍋頭',6,,,sysdate);insert into DKvalues(1,'包間');insert into DKvalues(2,'散臺');insert into Dinfo values(1,'1號包間',1,20,sysdate);insertintoDinfovalues(2,'2號包間',1,30,sysdate);insertintoDinfovalues(3,'3號包間',1,50,sysdate);insertintoDinfovalues(4,'1號散臺',2,8,sysdate);insertintoDinfovalues(5,'2號散臺',2,8,sysdate);insertintoDinfovalues(6,'3號散臺',2,15,sysdate);insertintoCvalues(1,2,sysdate,sysdate,275,150);insertintoCvalues(2,2,sysdate,sysdate,155,80);insertintoCvalues(3,1,sysdate,sysdate,566,302);insertintoCvalues(4,2,sysdate,sysdate,89,53);insertintoCvalues(5,1,sysdate,sysdate,798,435);insertintoCListvalues(1,1,2,'三文魚',1,,,;insertintoCListvalues(2,1,5,'油麥菜',1,,,;insertintoCListvalues(3,1,9,'二鍋頭',2,,,;完成【實(shí)驗(yàn)內(nèi)容】中的觸發(fā)器、存儲過程、函數(shù)和程序包等功能設(shè)計(jì),將程序腳本保存到文本文件中 在PL/SQLDeveloper環(huán)境下,用戶DINER登錄Oracle 新建SQL窗口 完成【 觸發(fā)器設(shè)計(jì)】(1) ORREPLACETRIGGERtri_CListBEFOREINSERTONCList FOREACHROWDECLAREt_Smoney%type;t_SPsum%type;BEGIN--補(bǔ)全MlistSELECTMname,Mprice,Mcost,:*Mprice INTO:,:,:,:FROMMlist WHERE=:;--計(jì)算Mlist
的增加量SELECTNVL(SUM(Cqty*Mprice),0),NVL(SUM(Cqty*(Mprice-Mcost)),0)INTOv_Smoney,v_SPsumFROMClist WHERE=:;--更新CupdateCsetSmoney=t_Smoney+:,SPsum=t_SPsum+(:*(::)where=:;ENDtri_CList ;(2) ORREPLACETRIGGERtri_upCList BEFOREUPDATEONCList FOREACHROWBEGINSELECTMname,Mprice,McostINTO:,:,:FROMMlist WHERE=:;::=NVL(:,:* NVL(:,:;UPDATECSETSmoney=Smoney-:+:,SPsum =SPsum-:*(::+:*(::WHERE=:;ENDtri_upCList ;(3) ORREPLACETRIGGERtri_delCListBEFOREDELETEONCList FOREACHROWBEGINUPDATECSET=:,=(:*(::)WHERE=:;ENDtri_delCList ;(4) ORREPLACETRIGGERtri_allBEFOREINSERTORUPDATEORDELETEONCListFOREACHROWDECLAREt_Smoney %type;t_SPsum %type;BEGINIFINSERTINGTHENSelect Mname,Mprice,Mcost,:*Mpriceinto :,:,:,:fromMlistwhere=:;Select nvl(sum(Cqty*Mprice),0),nvl(sum(Cqty*(Mprice-Mcost)),into t_Smoney,t_SPsumfromClistwhere=:;
0)updateCsetSmoney=t_Smoney+:,SPsum=t_SPsum+(:*(::)where=:;ELSIFUPDATINGTHENselect Mname,Mprice,Mcostinto :,:,:fromMlistwhere=:;::=nvl(:,:* nvl(:,:;UpdateCsetSmoney=Smoney-:+:,SPsum =SPsum-:*(::+:*(::where=:;ELSEUPDATECSET=:,=(:*(::);ENDIF;ENDtri_all
; 完成【 存儲過程、自定義函數(shù)設(shè)計(jì)】(1)
ORREPLACEFUNCTIONfGetDTSum(Cyearchar,Ctable %type)RETURN%TYPEAScons %TYPE;BEGINselect nvl(sum(spsum),0)into cons fromCwheredid in(select did fromdinfo wheredkid in (select dkid fromdk wheredkname=Ctable))and(to_char(endtime,'YYYY')=Cyear);RETURNcons;EXCEPTIONWHENO_DATA_FOUNDTHEN('Thedataisinvalid!'ENDfGetDTSum;
);(2) ORREPLACEPROCEDUREpGetKindSum(Cyearchar,Cnamechar,consout %TYPE)ASBEGINselect nvl(sum(mprice-mcost),0)into cons fromclistwheremid in(select mid frommlist wheremkid in(select mkid frommkwheremkname=Cname))andcid in(select cid fromCwhereto_char (endtime,'YYYY')=Cyear);EXCEPTIONWHENO_DATA_FOUNDTHEN('Thedatadoesn
’’texists!'
);ENDpGetKindSum;(3) cons1
%TYPE;cons2 %TYPE;BEGINcons1:=fGetDTSum('2013','包間');pGetKindSum('2013' ,'魚類',cons2);('cons1' ||cons1||'cons2' ||cons2||'');END; 完成【 程序包設(shè)計(jì)】(1) ORREPLACEPACKAGEpkSUMASFUNCTIONfGetDTSum(Cyearchar,Ctable %type)RETURN%TYPE;PROCEDUREpGetKindSum(Cyearchar,Cnamechar,consout %TYPE);ENDpkSUM;CREATEORREPLACEPACKAGEBODYpkSUMASCREATEORREPLACEFUNCTIONfGetDTSum(Cyearchar,Ctable %type)RETURN%TYPEAScons %TYPE;BEGINselect nvl(sum(spsum),0)into cons fromCwheredid in(select did fromdinfo wheredkid in (select dkid fromdk wheredkname=Ctable))and(to_char(endtime,'YYYY')=Cyear);RETURNcons;EXCEPTIONWHENO_DATA_FOUNDTHEN('Thedataisinvalid!' );ENDfGetDTSum;CREATEORREPLACEPROCEDUREpGetKindSum(Cyear char,Cnamechar,cons out %TYPE)ASBEGINselect nvl(sum(mprice-mcost),0) into cons fromclistwheremid in(select mid frommlist wheremkid in(select mkid frommkwheremkname=Cname))andcid in(select cid fromCwhereto_char (endtime,'YYYY')=Cyear);EXCEPTIONWHENO_DATA_FOUNDTHEN('Thedatadoesn ’’texists!' );ENDpGetKindSum;ENDpkSUM;CREATEORREPLACEPACKAGEBODYpkSUMASCREATEORREPLACEFUNCTIONfGetDTSum(Cyearchar,Ctable %type)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能標(biāo)識制度
- 中國科學(xué)院武漢病毒研究所第四季度集中招聘20人備考題庫附答案詳解
- 2025-2030中西部地區(qū)鐵路貨運(yùn)行業(yè)市場供需現(xiàn)狀投資布局規(guī)劃分析報(bào)告
- 2025至2030醫(yī)療器械注冊審批制度改革對行業(yè)創(chuàng)新影響研究報(bào)告
- 中國千年詞史研究
- 什邡市人力資源和社會保障局什邡市民政局關(guān)于2025年面向全市公開選調(diào)工作人員的備考題庫含答案詳解
- 2026年鎮(zhèn)安鎮(zhèn)人民政府公開招聘編外人員備考題庫有答案詳解
- 2026年浙江民泰商業(yè)銀行臺州玉環(huán)支行招聘備考題庫及參考答案詳解1套
- 2025-2030中國石墨烯納米粉市場現(xiàn)狀調(diào)查及未來競爭力剖析研究報(bào)告
- 2026年湛江市麻章中學(xué)招聘編外教師備考題庫有答案詳解
- 復(fù)方蒲公英注射液對心血管系統(tǒng)作用研究
- 2024年華能山東發(fā)電有限公司招聘筆試參考題庫含答案解析
- 高三英語定語從句公開課課件
- 學(xué)前教育-幼兒園戶外建構(gòu)游戲安全與對策的研究論文
- 門急診病歷質(zhì)控檢查評分標(biāo)準(zhǔn)
- 04S519小型排水構(gòu)筑物1
- 光纖激光打標(biāo)機(jī)說明書
- 勞動者個(gè)人職業(yè)健康監(jiān)護(hù)檔案
- 《兩角和與差的正弦、余弦、正切公式》示范公開課教學(xué)PPT課件【高中數(shù)學(xué)人教版】
- 境外宗教滲透與云南邊疆民族地區(qū)意識形態(tài)安全研究
- GB/T 28920-2012教學(xué)實(shí)驗(yàn)用危險(xiǎn)固體、液體的使用與保管
評論
0/150
提交評論