




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)期Oracle數(shù)據(jù)庫應(yīng)用技術(shù)試驗匯報選課序號:班級:學(xué)號:姓名:指導(dǎo)教師:史金余成績:2023年月日目錄1.試驗?zāi)繒A 12.試驗內(nèi)容 12.1觸發(fā)器設(shè)計 22.2存儲過程、自定義函數(shù)設(shè)計 22.3程序包設(shè)計 33.試驗環(huán)節(jié) 33.1創(chuàng)立表空間RESTAURANT,創(chuàng)立顧客DINER 33.2創(chuàng)立餐飲系統(tǒng)數(shù)據(jù)庫旳所有表,并向各表插入演示數(shù)據(jù) 43.3完畢【試驗內(nèi)容】中旳觸發(fā)器、存儲過程、函數(shù)和程序包等功能設(shè)計,將程序腳本保留到文本文獻(xiàn)Source.sql中 74.試驗總結(jié) 13PL/SQL程序設(shè)計試驗?zāi)繒A掌握PL/SQL程序設(shè)計基本技巧,包括基本數(shù)據(jù)類型、表類型、數(shù)組類型、匿名程序塊、控制語句、PL/SQL中使用SQL語句、游標(biāo)、錯誤處理等。熟悉和掌握PL/SQL中有關(guān)存儲過程、函數(shù)、包和觸發(fā)器程序設(shè)計技術(shù)。試驗內(nèi)容試驗平臺:PL/SQLDeveloper或Oracle旳其他客戶端管理工具。某餐飲系統(tǒng)數(shù)據(jù)庫(加粗字段為主鍵,斜體字段為外鍵),請創(chuàng)立如下各數(shù)據(jù)表,并實現(xiàn)如下存儲過程、函數(shù)、包和觸發(fā)器等功能設(shè)計,將程序腳本保留到文本文獻(xiàn)Source.sql中:菜肴類別表MK(菜肴類別編號MKid,菜肴類別名稱MkName),菜肴類別名稱:魚類、蔬菜類、涼菜類、肉類、主食類和酒水類等。菜單信息表MList(菜肴編號Mid,菜肴名稱Mname,菜肴類別MKid,菜肴單價Mprice,菜肴成本單價Mcost,更新日期Mdate)。餐臺類別表DK(餐臺類別編號DKid,餐臺類別名稱DkName),餐臺類別:包間和散臺等。餐臺信息表Dinfo(餐臺編號Did,餐臺名稱Dname,餐臺類別DKid,座位數(shù)Dseats,更新日期Ddate)。消費單主表C(消費單號Cid,餐臺編號Did,消費開始時間StartTime,結(jié)賬時間EndTime,消費金額合計Smoney,盈利金額合計SPsum),其中,消費金額合計=消費單明細(xì)表CList中該消費單號旳所有消費記錄旳消費金額旳合計,即SUM(消費金額)或SUM(菜肴單價×消費數(shù)量),盈利金額合計=消費單明細(xì)表CList中該消費單號旳所有消費記錄旳盈利合計,即SUM((菜肴單價-菜肴成本單價)×消費數(shù)量)。消費單明細(xì)表CList(消費單號Cid,序號Sid,菜肴編號Mid,菜肴名稱Mname,消費數(shù)量Cqty,菜肴單價Mprice,菜肴成本單價Mcost,消費金額Cmoney),消費金額=消費數(shù)量×菜肴單價;消費數(shù)量為正數(shù)是正常點菜,消費數(shù)量為負(fù)數(shù)是退菜,消費數(shù)量為0是贈菜。2.1觸發(fā)器設(shè)計2.1.1為消費單明細(xì)表CList定義一種觸發(fā)器,每插入(INSERT)一條消費單明細(xì)記錄(消費單號,序號,菜肴編號,消費數(shù)量),自動根據(jù)菜肴編號從菜單信息表MList中讀取菜肴名稱Mname、菜肴單價Mprice、菜肴成本單價Mcost,然后計算其消費金額(=消費數(shù)量×菜肴單價)、以及消費單主表C旳消費金額合計、盈利金額合計2.1.2為消費單明細(xì)表CList定義一種觸發(fā)器,每更新UPDATE一條消費單明細(xì)表記錄,自動修改其消費金額、以及消費單主表C旳消費金額合計、盈利金額合計2.1.3為消費單明細(xì)表CList定義一種觸發(fā)器,每刪除DELETE一條消費單明細(xì)表記錄自動修改其消費單主表C旳消費金額合計、盈利金額合計2.1.42.2存儲過程、自定義函數(shù)設(shè)計2.2.1設(shè)計一種自定義函數(shù)fGetDTSum,實現(xiàn)記錄某年份給定餐臺類別旳成本金額合計旳功能,輸入?yún)?shù)是記錄年份和餐臺類別,返回數(shù)據(jù)是成本金額合計。成本金額=消費數(shù)量×菜肴成本單價。求年份旳函數(shù)為EXTRACT(YEARFROM日期字段),本題:記錄年份=EXTRACT(YEARFROMEndTime),EndTime2.2.2設(shè)計一種存儲過程pGetKindSum,實現(xiàn)記錄某年份給定菜肴類別旳盈利金額合計旳功能,輸入?yún)?shù)是記錄年份和菜肴類別,輸出參數(shù)是盈利金額合計。盈利金額=消費數(shù)量×(菜肴單價-2.2.3編寫一段匿名PL/SQL程序塊,調(diào)用函數(shù)fGetDTSum,輸出2023年餐臺類別名為“包間”旳成本金額合計;調(diào)用存儲過程pGetKindSum,輸出2023年菜肴類別名為“魚類2.3程序包設(shè)計2.3.1設(shè)計一種程序包,包名為pkSUM,包括并實現(xiàn)【2.2.1】和【2.2.2】旳函數(shù)及存儲過程功能2.3.2設(shè)計一種匿名PL/SQL程序塊,參照【2.2.3】調(diào)用【2.3.1】中程序包旳函數(shù)和存儲過程,輸出2023年餐臺類別名為“散臺”旳成本金額合計,輸出2023年菜肴類別名為“蔬菜類試驗環(huán)節(jié)(備注:假如用試驗室微機,請從【3.2】開始做,登錄顧客DINER改為stuXX)3.1創(chuàng)立表空間RESTAURANT,創(chuàng)立顧客DINER3.1.2顧客SYSTEM登錄Oracle3.1.3創(chuàng)立表空間RESTAURANT,大小10MCREATETABLESPACERESTAURANTDATAFILE'F:\RESTAURANT.ora'SIZE10MDEFAULTSTORAGE(INITIAL10KNEXT50KMINEXTENTS1MAXEXTENTS99PCTINCREASE10)ONLINE;3.1.4創(chuàng)立顧客DINER,口令XXX,默認(rèn)表空間RESTAURANT,給該顧客授予角色權(quán)限CONNECT、RESOURCE。 CREATEUSERDINERIDENTIFIEDBY"wzl123"DEFAULTTABLESPACERESTAURANT; GRANTCONNECTTODINER; GRANTRESOURCETODINER;3.2創(chuàng)立餐飲系統(tǒng)數(shù)據(jù)庫旳所有表,并向各表插入演示數(shù)據(jù)3.2.1啟動PL/SQLDeveloper(或者啟動SQL*PLUS、EnterpriseManagerConsole、瀏覽器模式旳EM(企業(yè)管理器)等工具均可以),顧客DINER登錄Oracle。3.2.2創(chuàng)立試驗內(nèi)容中旳餐飲系統(tǒng)數(shù)據(jù)庫旳所有表(菜肴類別表MK、菜單信息表MList、餐臺類別表DK、餐臺信息表Dinfo、消費單主表C、消費單明細(xì)表CList) createtableMK(MKidnumber,MkNamevarchar2(64),constraintpk_MKidprimarykey(MKid));createtableMList(Midnumber,Mnamevarchar2(64),MKidnumberreferencesMK(MKid),Mpricenumber(8,2),Mcostnumber(8,2),Mdatedate,constraintpk_Midprimarykey(Mid));createtableDK(DKidnumber,DkNamevarchar2(64),constraintpk_DKidprimarykey(DKid));createtableDinfo(Didnumber,Dnamevarchar2(64),DKidnumberreferencesDK(DKid),Dseatsnumber,Ddatedate,constraintpk_Didprimarykey(Did));createtableC(Cidnumber,DidnumberreferencesDinfo(Did),StartTimedate,EndTimedate,Smoneynumber(8,2),SPsumnumber(8,2),constraintpk_Cidprimarykey(Cid));createtableCList(Sidnumber,CidnumberreferencesC(Cid),MidnumberreferencesMList(Mid),Mnamevarchar2(64),Cqtynumber,Mpricenumber(8,2),Mcostnumber(8,2),Cmoneynumber(8,2),constraintpk_Sidprimarykey(Sid));3.2.3依次向菜肴類別表MK、菜單信息表MList、餐臺類別表DK、餐臺信息表Dinfo insertintoMKvalues(1,'魚類');insertintoMKvalues(2,'蔬菜類');insertintoMKvalues(3,'涼菜類');insertintoMKvalues(4,'肉類');insertintoMKvalues(5,'主食類');insertintoMKvalues(6,'酒水');insertintoMListvalues(1,'鯉魚',1,50.00,30.00,sysdate);insertintoMListvalues(2,'三文魚',1,120.00,80.00,sysdate);insertintoMListvalues(3,'白菜',2,15.00,5.00,sysdate);insertintoMListvalues(4,'土豆',2,12.00,4.00,sysdate);insertintoMListvalues(5,'油麥菜',2,12.00,5.00,sysdate);insertintoMListvalues(6,'涼拌黃瓜',3,5.00,3.00,sysdate);insertintoMListvalues(7,'雞肉',4,30.00,10.00,sysdate);insertintoMListvalues(8,'米飯',5,1.50,0.50,sysdate);insertintoMListvalues(9,'二鍋頭',6,50.00,30.00,sysdate);insertintoDKvalues(1,'包間');insertintoDKvalues(2,'散臺');insertintoDinfovalues(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,120.00,80.00,120.00);insertintoCListvalues(2,1,5,'油麥菜',1,12.00,5.00,12.00);insertintoCListvalues(3,1,9,'二鍋頭',2,50.00,30.00,100.00);3.3完畢【試驗內(nèi)容】中旳觸發(fā)器、存儲過程、函數(shù)和程序包等功能設(shè)計,將程序腳本保留到文本文獻(xiàn)Source.sql中3.3.1在PL/SQLDeveloper環(huán)境下,顧客DINER登錄O3.3.23.3.3完畢【2.1觸發(fā)器設(shè)計(1)2.1.1CREATEORREPLACETRIGGERtri_CListBEFOREINSERTONCListFOREACHROWDECLAREt_SmoneyC.Smoney%type;t_SPsumC.SPsum%type;BEGIN--補全MlistSELECTMname,Mprice,Mcost,:new.Cqty*MpriceINTO:new.Mname,:new.Mprice,:new.Mcost,:new.CmoneyFROMMlistWHEREMlist.Mid=:new.Mid;--計算Mlist旳增長量SELECTNVL(SUM(Cqty*Mprice),0),NVL(SUM(Cqty*(Mprice-Mcost)),0)INTOv_Smoney,v_SPsumFROMClistWHEREClist.Cid=:new.Cid;--更新CupdateCsetSmoney=t_Smoney+:new.Cmoney,SPsum=t_SPsum+(:new.Cqty*(:new.Mprice-:new.Mcost))whereC.Cid=:new.Cid;ENDtri_CList;(2)2.1.2CREATEORREPLACETRIGGERtri_upCListBEFOREUPDATEONCListFOREACHROWBEGINSELECTMname,Mprice,McostINTO:new.Mname,:new.Mprice,:new.McostFROMMlistWHEREMlist.Mid=:new.Mid;:new.Cmoney:=NVL(:new.Cqty,:old.Cqty)*NVL(:new.Mprice,:old.Mprice);UPDATECSETSmoney=Smoney-:old.Cmoney+:new.Cmoney,SPsum=SPsum-:old.Cqty*(:old.Mprice-:old.Mcost)+:new.Cqty*(:new.Mprice-:new.Mcost)WHEREC.Cid=:old.Cid;ENDtri_upCList;(3)2.1.3CREATEORREPLACETRIGGERtri_delCListBEFOREDELETEONCListFOREACHROWBEGINUPDATECSETC.Smoney=C.Smoney-:old.Cmoney,C.SPsum=C.SPsum-(:old.Cqty*(:old.Mprice-:old.Mcost))WHEREC.Cid=:old.Cid;ENDtri_delCList;(4)2.1.4CREATEORREPLACETRIGGERtri_allBEFOREINSERTORUPDATEORDELETEONCListFOREACHROWDECLAREt_SmoneyC.Smoney%type;t_SPsumC.SPsum%type;BEGINIFINSERTINGTHENSelectMname,Mprice,Mcost,:new.Cqty*Mpriceinto:new.Mname,:new.Mprice,:new.Mcost,:new.CmoneyfromMlistwhereMlist.Mid=:new.Mid;Selectnvl(sum(Cqty*Mprice),0),nvl(sum(Cqty*(Mprice-Mcost)),0)intot_Smoney,t_SPsumfromClistwhereClist.Cid=:new.Cid;updateCsetSmoney=t_Smoney+:new.Cmoney,SPsum=t_SPsum+(:new.Cqty*(:new.Mprice-:new.Mcost))whereC.Cid=:new.Cid;ELSIFUPDATINGTHENselectMname,Mprice,Mcostinto:new.Mname,:new.Mprice,:new.McostfromMlistwhereMlist.Mid=:new.Mid;:new.Cmoney:=nvl(:new.Cqty,:old.Cqty)*nvl(:new.Mprice,:old.Mprice);UpdateCsetSmoney=Smoney-:old.Cmoney+:new.Cmoney,SPsum=SPsum-:old.Cqty*(:old.Mprice-:old.Mcost)+:new.Cqty*(:new.Mprice-:new.Mcost)whereC.Cid=:old.Cid;ELSEUPDATECSETC.Smoney=C.Smoney-:old.Cmoney,C.SPsum=C.SPsum-(:old.Cqty*(:old.Mprice-:old.Mcost));ENDIF;ENDtri_all;3.3.4完畢【2.2(1)2.2.1CREATEORREPLACEFUNCTIONfGetDTSum(Cyearchar,Ctabledk.dkname%type)RETURNC.spsum%TYPEASconsC.spsum%TYPE;BEGINselectnvl(sum(spsum),0)intoconsfromCwheredidin(selectdidfromdinfowheredkidin(selectdkidfromdkwheredkname=Ctable))and(to_char(endtime,'YYYY')=Cyear);RETURNcons;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedataisinvalid!');ENDfGetDTSum;(2)2.2.2CREATEORREPLACEPROCEDUREpGetKindSum(Cyearchar,Cnamechar,consoutclist.mcost%TYPE)ASBEGINselectnvl(sum(mprice-mcost),0)intoconsfromclistwheremidin(selectmidfrommlistwheremkidin(selectmkidfrommkwheremkname=Cname))andcidin(selectcidfromCwhereto_char(endtime,'YYYY')=Cyear);EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedatadoesn’’texists!');ENDpGetKindSum;(3)2.2.3DECLAREcons1C.spsum%TYPE;cons2clist.mcost%TYPE;BEGINcons1:=fGetDTSum('2023','包間');pGetKindSum('2023','魚類',cons2);DBMS_OUTPUT.PUT_LINE('cons1'||cons1||'cons2'||cons2||'');END;3.3.5完畢【2.3程序包(1)2.3.1CREATEORREPLACEPACKAGEpkSUMASFUNCTIONfGetDTSum(Cyearchar,Ctabledk.dkname%type)RETURNC.spsum%TYPE;PROCEDUREpGetKindSum(Cyearchar,Cnamechar,consoutclist.mcost%TYPE);ENDpkSUM;CREATEORREPLACEPACKAGEBODYpkSUMASCREATEORREPLACEFUNCTIONfGetDTSum(Cyearchar,Ctabledk.dkname%type)RETURNC.spsum%TYPEASconsC.spsum%TYPE;BEGINselectnvl(sum(spsum),0)intoconsfromCwheredidin(selectdidfromdinfowheredkidin(selectdkidfromdkwheredkname=Ctable))and(to_char(endtime,'YYYY')=Cyear);RETURNcons;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedataisinvalid!');ENDfGetDTSum;CREATEORREPLACEPROCEDUREpGetKindSum(Cyearchar,Cnamechar,consoutclist.mcost%TYPE)ASBEGINselectnvl(sum(mprice-mcost),0)intoconsfromclistwheremidin(selectmidfrommlistwheremkidin(selectmkidfrommkwheremkname=Cname))andcidin(selectcidfromCwhereto_char(endtime,'YYYY')=Cyear);EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('Thedatadoesn’’texists!');ENDpGetKindSum;ENDpkSUM;CREATEORREPLACEPACKAGEBODYpkSUMASCREATEORRE
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位蔬菜供應(yīng)合同范本
- 合同范本其他事項
- 合同范本軟件畫畫
- 卷簾窗簾購銷合同范例
- 2025年耐磨合金鑄鐵項目建議書
- 新西蘭蜂蜜采購合同范本
- 水果購銷合同范本
- 家具設(shè)計合同范本
- 單位車輛定點維修合同范本
- 醫(yī)院租賃合同范本
- 隨機交易策略(TB版)
- 《綠色建筑設(shè)計原理》課件
- 中醫(yī)館裝修合同范本
- 1.1 銳角三角函數(shù)(第1課時) 課件 2024-2025學(xué)年北師大版九年級數(shù)學(xué)下冊
- 椎管打骨水泥后的護(hù)理
- 學(xué)習(xí)與科技的融合主題班會
- 《直播銷售》課件-項目一 認(rèn)識直播與直播銷售
- 2025年南京科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 2025-2030年中國航空配餐行業(yè)市場發(fā)展現(xiàn)狀及投資前景規(guī)劃研究報告
- 新課標(biāo)背景下的跨學(xué)科學(xué)習(xí)內(nèi)涵、設(shè)置邏輯與實踐原則
- 母嬰分離產(chǎn)婦的護(hù)理
評論
0/150
提交評論