大型數(shù)據(jù)庫技術:PL SQL練習_第1頁
大型數(shù)據(jù)庫技術:PL SQL練習_第2頁
大型數(shù)據(jù)庫技術:PL SQL練習_第3頁
大型數(shù)據(jù)庫技術:PL SQL練習_第4頁
大型數(shù)據(jù)庫技術:PL SQL練習_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

PL/SQL練習練習一編寫一個觸發(fā)器,當任何時候某個部門從DEPT中刪除時,該觸發(fā)器將從EMP表中刪除該部門的所有雇員。createorreplacetriggertri_dept_empafterdeleteondeptforeachrowbegindeletefromempwheredeptno=:old.deptno;end;/練習二某招生系統(tǒng),要求計算考生的總分,并根據(jù)每門專業(yè)課的最低分數(shù)線和總分的最低分數(shù)線自動將考生歸類為錄取考生或落選考生。SID 考生編號SName考生姓名Status 標志位TotalScore總分EnglishScore英語成績PoliticsScore政治成績Major1Score專業(yè)課1成績Major2Score專業(yè)課2成績Major3Score專業(yè)課3成績createorreplaceprocedurehandle_score(esnumber,psnumber,m1snumber,m2snumber,m3snumber,tsnumber)iscursorc_scoreisselect*fromscoreforupdatenowait;beginforcinc_scoreloopupdatescoresettotalscore=c.englishscore+c.politicsscore+c.major1score+c.major2score+c.major3scorewherecurrentofc_score;ifc.totalscore>=tsandc.englishescore>=esandc.politicsscore>=psandc.major1score>=m1sandc.major2score>=m2sandc.major3score>=m3sthenupdatescoresetc.status='PASS'wherecurrentofc_score;elseupdatescoresetc.status='FAIL'wherecurrentofc_score;endif;endloop;end;/練習三編寫一個函數(shù)以檢查所指定雇員的薪水是否有效范圍內(nèi)。不同職位的薪水范圍為:Designation RangeClerk 1500-2500Salesman 2501-3500Analyst 3501-4500Others 4501andabove.如果薪水在此范圍內(nèi),則顯示消息"SalaryisOK",否則更新薪水為該范圍內(nèi)的最小值。createorreplaceprocedureProc_Chk_Emp_Sal(Emp_NoINemp.emp_id%TYPE)asVc_Jobemp.job%TYPE;N_Salemp.emp_salary%TYPE;beginselectjob,emp_salaryintoVc_Job,N_Salfromempwhereemp_id=Emp_No;ifUpper(Vc_Job)='CLERK'thenifN_Sal<=2500andN_Sal>=1500thenDBMS_OUTPUT.PUT_LINE('SalaryisOK!');elseupdateempsetemp_salary=1500whereemp_id=Emp_No;endif;elsifUpper(Vc_Job)='SALESMAN'thenifN_Sal<=3500andN_Sal>=2501thenDBMS_OUTPUT.PUT_LINE('SalaryisOK!');elseupdateempsetemp_salary=2501whereemp_id=Emp_No;endif;elsifUpper(Vc_Job)='ANALYST'thenifN_Sal<=4500andN_Sal>=3501thenDBMS_OUTPUT.PUT_LINE('SalaryisOK!');elseupdateempsetemp_salary=3501whereemp_id=Emp_No;endif;elsifUpper(Vc_Job)='OTHERS'thenifN_Sal>=4501thenDBMS_OUTPUT.PUT_LINE('SalaryisOK!');elseupdateempsetemp_salary=4501whereemp_id=Emp_No;endif;elsenull;endif;end;/練習四“北京到香港”的飛機票目前還剩3張,假設現(xiàn)在有4個訂票點都同時要訂“北京到香港”的機票,那么必然至少有一個訂票點不能訂到票。請設計一個訂票程序來保證機票的正確訂出。訂票表的結(jié)構(gòu)createtableticket(idnumber(3)primarykey,--唯一idroutevarchar2(20)notnull,--航線名稱

numnumber(3)--票的余數(shù));insertintoticketvalues(1,'北京到香港',3);createorreplaceprocedurepro_plane(v_routevarchar2,v_numnumber)asCURSORcur_ticket(v_p_route)ISselectnumfromticketwhereroute=v_p_routeforupdate;beginOPENcur_ticket(v_route);ifcur_ticket.num<v_numthenDBMS_OUTPUT.PUT_LINE('NotEnoughTicketAvailable!');elseupdateticketsetnum=num-v_numwherecurrentofcur_ticket;endif;CLOSEcur_ticket;commit;end;/練習五醫(yī)院藥品都實行效期管理,效期早的藥品先使用。請設計一個程序來按效期使用藥品,要求:使用觸發(fā)器來維護兩個表之間的庫存的一致性對藥品出庫時,能正確選擇批次藥品庫存表kccreatetablekc(idnumber(2)primarykey,--藥品idypnamevarchar2(20),--藥品名稱

numnumber(5)--數(shù)量);insertintokcvalues(1,'青霉素',3000);insertintokcvalues(2,'雙黃連',4000);藥品批次庫存表batchkccreatetablebatchkc(idnumber(2)referenceskc(id),--藥品idvaliddatedate,--到期時間

bnumnumber(5),--數(shù)量

primarykey(id,validdate));insertintobatchkcvalues(1,'01-5月-04',2500);insertintobatchkcvalues(1,'01-12月-04',500);insertintobatchkcvalues(2,'12-1月-04',1000);insertintobatchkcvalues(2,'07-6月-04',1000);insertintobatchkcvalues(2,'13-8月-04',1000);insertintobatchkcvalues(2,'13-12月-05',1000);出庫青霉素2700支

1,'01-5月-04',25001,'01-12月-04',200createorreplaceproceduredeliver(v_nameVARCHAR2,v_numNUMBER)asv_kcNUMBER;v_leftNUMBER;v_p_idNUMBER;cursorcur_batchkc(v_idNUMBER)isselectbnumfrombatchkcwhereid=v_idorderbyvaliddateforupdate;beginselectnum,idintov_kc,v_p_idfromkcwhereypname=v_name;ifv_kc>=v_numthenv_left:=v_num;foriterincur_batchkc(v_p_id)loopifiter.bnum>v_leftthenupdatebatchkcsetbnum=bnum-v_leftwherecurrentofcur_batchkc;EXIT;elsifiter.bnum=v_numthendeletefrombatchkcwherecurrentofcur_batchkc;EXIT;elsedeletefrombatchkcwherecurrentofcur_batchkc;v_left:=v_left-iter.bnum;endif;endloop;elseDBMS_OUTPUT.PUT_LINE('NotEnoughinInventory!');endif;end;/createorreplacetriggertri_batchkcafterdeleteorupdateonbatchkcforeachrowdeclarev_numNUMBER;beginifDELETINGthenupdatekcsetnum=num-:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論