oracle綜合性實(shí)驗(yàn)指導(dǎo)_第1頁
oracle綜合性實(shí)驗(yàn)指導(dǎo)_第2頁
oracle綜合性實(shí)驗(yàn)指導(dǎo)_第3頁
oracle綜合性實(shí)驗(yàn)指導(dǎo)_第4頁
oracle綜合性實(shí)驗(yàn)指導(dǎo)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

湖南科技學(xué)院綜合性實(shí)驗(yàn)指導(dǎo)書實(shí)驗(yàn)名稱:PL/SQL編程實(shí)驗(yàn)項(xiàng)目性質(zhì):綜合性所涉及課程:Oracle數(shù)據(jù)庫計(jì)劃學(xué)時(shí):4實(shí)驗(yàn)?zāi)康氖炀氄莆誔L/SQL程序設(shè)計(jì)的基本知識。熟練掌握PL/SQL中控制結(jié)構(gòu)的使用。具體包括選擇結(jié)構(gòu)語句(IF語句和CASE語句),循環(huán)結(jié)構(gòu)(四種循環(huán)結(jié)構(gòu))。熟練使用PL/SQL中系統(tǒng)函數(shù)。掌握PL/SQL中異常處理語句的使用掌握PL/SQL中SELECT語句和DML語句的綜合運(yùn)用。實(shí)驗(yàn)內(nèi)容及步驟創(chuàng)建用戶,指定密碼、表空間。用戶名命名以本人姓名的縮寫+‘_’+學(xué)號最后兩位。為該用戶授予sysdba、connect、resource權(quán)限。以本人的用戶身份登錄。練習(xí)選擇結(jié)構(gòu)語句的使用方法。1、條件語句IF語法:IF<條件表達(dá)式>THEN<執(zhí)行語句>……<執(zhí)行語句n>[ELSIF<條件表達(dá)式>THEN<執(zhí)行語句>……<執(zhí)行語句n>……ELSE<執(zhí)行語句>]ENDIF;2、分支語句CASE語法:CASE<變量>WHEN<表達(dá)式1>THEN值1WHEN<表達(dá)式2>THEN值2……WHEN<表達(dá)式n>THEN值nELSE值n+1END;例1:聲明一個(gè)整型變量Num,使用IF語句判斷Num變量是正數(shù)、負(fù)數(shù)或0。SETServerOutputDECLARENumINTEGER:=-11;BEGINIFNum<0THENdbms_output.put_line('負(fù)數(shù)');ELSIFNum>0THENdbms_output.put_line('正數(shù)');ELSEdbms_output.put_line('0');ENDIF;END;例2、使用CASE語句根據(jù)給定的整數(shù)輸出對應(yīng)的星期值:SETServerOutputDECLAREvarDAYINTEGER:=3;ResultVARCHAR2(20);BEGINResult:=CASEvarDAYWHEN1THEN'星期一'WHEN2THEN'星期二'WHEN3THEN'星期三'WHEN4THEN'星期四'WHEN5THEN'星期五'WHEN6THEN'星期六'WHEN7THEN'星期七'ELSE'數(shù)據(jù)越界'END;dbms_output.put_line(Result);END;練習(xí)循環(huán)結(jié)構(gòu)語句的使用方法。1、循環(huán)語句LOOP…EXIT…ENDLOOP<程序塊1>IF<條件表達(dá)式>THENEXITENDIF<程序塊2>ENDLOOP;2、循環(huán)語句LOOP…EXITWHEN…ENDLOOP<程序塊1>EXITWHEN<條件表達(dá)式><程序塊2>ENDLOOP;3、循環(huán)語句WHILE…LOOP…ENDLOOPWHILE<條件表達(dá)式>LOOP<程序塊>ENDLOOP;4、循環(huán)語句FOR…IN…LOOP…ENDLOOPFOR<循環(huán)變量>IN<初始值>..<終止值>LOOP<程序塊>ENDLOOP;例1、計(jì)算1到3的累加和。SETServerOutputDECLAREv_NumINTEGER:=1;v_SumINTEGER:=0;BEGINLOOPv_Sum:=v_Sum+v_Num;dbms_output.put_line(v_Num);IFv_Num=3THENEXIT;ENDIF;dbms_output.put_line('+');v_Num:=v_Num+1;ENDLOOP;dbms_output.put_line('=');dbms_output.put_line(v_Sum);END;例2、SETServerOutputDECLAREv_NumINTEGER:=1;v_SumINTEGER:=0;BEGINLOOPv_Sum:=v_Sum+v_Num;dbms_output.put_line(v_Num);EXITWHENv_Num=3;dbms_output.put_line('+');v_Num:=v_Num+1;ENDLOOP;dbms_output.put_line('=');dbms_output.put_line(v_Sum);END;例3、SETServerOutputDECLAREv_NumINTEGER;v_SumINTEGER:=0;BEGINFORv_NumIN1..3LOOPv_Sum:=v_Sum+v_Num;dbms_output.put_line(v_Num);IFv_Num<3THENdbms_output.put_line('+');ENDIF;ENDLOOP;dbms_output.put_line('=');dbms_output.put_line(v_Sum);END;練習(xí)異常處理語句的使用方法。WHEN語句來定義異常處理:EXCEPTIONWHEN<異常情況名>THEN<異常處理代碼>WHEN<異常情況名>THEN<異常處理代碼>……WHENOTHERSTHEN<異常處理代碼>例1、SETSERVEROUTPUTON;DECLARExNUMBER;BEGINx:='a123';--向NUMBER類型的變量X中賦值字符串,導(dǎo)致異常EXCEPTIONWHENVALUE_ERRORTHENDBMS_OUTPUT.PUT_LINE('數(shù)據(jù)類型錯誤');END;例2、SETSERVEROUTPUTON;DECLAREv_resultNUMBER(10):=0;BEGINv_result:=100/0;DBMS_OUTPUT.PUT_LINE('結(jié)果是:'||v_result);EXCEPTIONWHENZERO_DIVIDETHENDBMS_OUTPUT.PUT_LINE('除數(shù)是零!默認(rèn)用1替代除數(shù),結(jié)果是:'||100/1);END;練習(xí)PL/SQL中SELECT語句和DML語句的綜合運(yùn)用。創(chuàng)建表departments和表employees,并為兩張表輸入若干數(shù)據(jù)。如下圖所示。表departments結(jié)構(gòu):字段名稱字段類型約束Dep_idnumber主鍵Dep_namevarchar2(20)表employees結(jié)構(gòu):字段名稱字段類型約束emp_idnumber主鍵emp_namevarchar2(20)sexvarchar2(20)titlevarchar2(20)wagenumberidcardvarchar2(12)dep_idnumber外鍵完成思考題部分的PL/SQL程序編寫。實(shí)驗(yàn)(設(shè)計(jì))儀器設(shè)備和材料清單硬件環(huán)境:PC機(jī)軟件環(huán)境:Oracle10g實(shí)驗(yàn)要求驗(yàn)證實(shí)驗(yàn)內(nèi)容部分的程序代碼。綜合運(yùn)用各種程序結(jié)構(gòu)完成思考題部分的PL/SQL程序編寫??己诵问揭詫?shí)驗(yàn)報(bào)告的程序代碼結(jié)果作為成績。實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)?zāi)康?。思考題的源程序清單。寫出在實(shí)驗(yàn)過程中遇到的問題及解決方法。要求字跡端正、條理清晰、概念正確。思考題編寫PL/SQL程序,使用LOOP…EXIT…END語句計(jì)算1—100之間所有偶數(shù)之和.編寫PL/SQL程序,查詢5號員工工資,如果工資小于3000,則加200員工資,并提示信息“5號員工工資已更新?!?,如果工資大于3000,則提示信息“5號員工工資為XXX,已達(dá)到規(guī)定標(biāo)準(zhǔn)。”編寫PL/SQL程序,查詢1號員工的工資,使用CASE語句輸出其工資等級。工資小于等于3000,等級為“低”;工資大于3000,小于5000,等級為”中”;工資大于等于5000,等級為高;編寫PL/SQL程序,查詢的departments表中是否有部門號為“6”的記錄,如果沒有,插入新記錄部門號為6,部門名稱為“后勤部”。如果有,顯示查詢結(jié)果。

湖南科技學(xué)院計(jì)算機(jī)與通信工程系實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)項(xiàng)目PL/SQL編程課程名稱Oracle數(shù)據(jù)庫成績時(shí)間2012年12月日第15周第9-12節(jié)地點(diǎn)E305姓名學(xué)號班級一、實(shí)驗(yàn)要求在Oracle10g中綜合運(yùn)用PL/SQL中各種程序控制結(jié)構(gòu)、系統(tǒng)函數(shù)、異常處理語句以及DML語句完成思考題部分的PL/SQL程序編寫。二、實(shí)驗(yàn)?zāi)康氖炀氄莆誔L/SQL程序設(shè)計(jì)的基本知識。熟練掌握PL/SQL中控制結(jié)構(gòu)的使用。具體包括選擇結(jié)構(gòu)語句(IF語句和CASE語句),循環(huán)結(jié)構(gòu)(四種循環(huán)結(jié)構(gòu))。熟練使用PL/SQL中系統(tǒng)函數(shù)。掌握PL/SQL中異常處理語句的使用掌握PL/SQL中SELECT語句和DML語句的綜合運(yùn)用。三、實(shí)驗(yàn)環(huán)境硬件設(shè)備:PC機(jī)一臺操作系統(tǒng):WindowsXP應(yīng)用工具:Oracle10g四、實(shí)驗(yàn)內(nèi)容及結(jié)果以SYS用戶登錄系統(tǒng)。代碼如下:sqlplussys/jsjorclassysdba創(chuàng)建用戶,指定密碼、表空間。用戶名命名以本人姓名的縮寫+‘_’+學(xué)號最后兩位。代碼如下:createuserhlj_38identifiedbyhuangdefaulttablespaceuserstemporarytablespacetemp;為該用戶授予sysdba、connect、resource權(quán)限。代碼如下:Grantsysdbatohlj_38;Grantconnecttohlj_38;Grantresourcetohlj_38;以自己的用戶身份登錄。代碼如下:Exit;Sqlplushlj_38/huangassysdba;在本用戶方案中創(chuàng)建表departments,并為該表輸入若干數(shù)據(jù)。程序代碼如下:createtablehlj_38.departments(Dep_idnumberprimarykey,Dep_namevarchar2(20));Insertintohlj_38.departmentsvalues('1','人事部');Insertintohlj_38.departmentsvalues('2','研發(fā)部');Insertintohlj_38.departmentsvalues('3','采購部');Insertintohlj_38.departmentsvalues('4','技術(shù)部');Insertintohlj_38.departmentsvalues('5','營銷部');commit;select*fromhlj_38.departments;執(zhí)行結(jié)果如下:在本用戶方案中創(chuàng)建表employees,并為該表輸入若干數(shù)據(jù)。程序代碼如下:createtablehlj_38.employees(emp_idnumberprimarykey,emp_namevarchar2(20),sexvarchar2(20),titlevarchar2(10),wagenumber,idcardvarchar2(12),Dep_idnumber);Altertablehlj_38.employeesAddconstraintFK_EMP_DEPIDForeignkey(Dep_id)referenceshlj_38.departments(Dep_id);INSERTINTOhlj_38.employeesVALUES('001','黃柳姣','女','總監(jiān)','8000','身份證','1');INSERTINTOhlj_38.employeesVALUES('002','張?jiān)侥?,'女','開發(fā)人員','4500','身份證','2');INSERTINTOhlj_38.employeesVALUES('003','李敏華','男','普通員工','3000','身份證','3');INSERTINTOhlj_38.employeesVALUES('004','劉玲','女','經(jīng)理','7000','身份證','4');commit;select*fromhlj_38.employees;執(zhí)行結(jié)果如下:編寫PL/SQL程序,使用LOOP…EXIT…END語句計(jì)算1—100之間所有偶數(shù)之和。程序代碼如下:Setserveroutputon;declare

v_countnumber:=1;

v_sumnumber:=0;

begin

forv_countin1..100

loop

ifmod(v_count,2)=0then

v_sum:=v_sum+v_count;

endif;

endloop;dbms_output.put_line(‘1-100之間所有偶數(shù)之和是:’||v_sum);

end;執(zhí)行結(jié)果如下:編寫PL/SQL程序,查詢5號員工工資,如果工資小于3000,則加200員工資,并提示信息“5號員工工資已更新?!?,如果工資大于3000,則提示信息“5號員工工資為XXX,已達(dá)到規(guī)定標(biāo)準(zhǔn)。”程序代碼如下:Setserveroutputon;Declarev_wagehlj_38.employees.wage%type;beginselectwageintov_wagefromhlj_38.employeeswherehlj_38.employees.emp_id='2';ifv_wage<4000thenv_wage:=v_wage+200;dbms_output.put_line('3號員工工資已更新'||v_wage);elsedbms_output.put_line('3號員工工資已更新為'||v_wage);dbms_output.put_line('已達(dá)到標(biāo)準(zhǔn)');endif;end;執(zhí)行結(jié)果如下:編寫PL/SQL程序,查詢1號員工的工資,使用CASE語句輸出其工資等級。工資小于等于3000,等級為“低”;工資大于3000,小于5000,等級為”中”;工資大于等于5000,等級為高;程序代碼如下:Setserveroutputon;Declarev_wagehlj_38.employees.wage%type;v_gradevarchar2(2);beginselectwageintov

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論