版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Oracle技術(shù)實(shí)驗(yàn)報(bào)告(五)成績實(shí)驗(yàn)名稱Oracle編程(一)姓名學(xué)號(hào)班級(jí)實(shí)驗(yàn)?zāi)康模?)熟練掌握編寫和調(diào)試PL/SQL塊的方法。(2)熟練掌握編寫和調(diào)試存儲(chǔ)過程方法。(3)熟練掌握編寫和調(diào)試函數(shù)方法。(4)熟練掌握各種控制結(jié)構(gòu)語句的使用。實(shí)驗(yàn)內(nèi)容(1) 編寫一個(gè)PL/SQL塊,輸出emp表中所有員工的員工名、員工號(hào)、工資和部門號(hào)。BEGIN FOR v_emp IN (SELECT * FROM EMP) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.ename| | v_emp.empno| |v_emp.sal| | v_emp.deptno); END LOOP; E
2、ND; /(2) 創(chuàng)建一個(gè)存儲(chǔ)過程,以員工號(hào)為參數(shù),輸出該員工的工資。 (提示:如果不存在該員工,則顯示“員工號(hào)不存在” )CREATE OR REPLACE PROCEDURE OUTPUT_SAL(p_empno emp.empno%type) AS V_sal emp.sal%type;BEGIN SELECT sal INTO v_sal FROM emp WHERE empno=p_empno; DBMS_OUTPUT.PUT_LINE(v_sal);EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(員工號(hào)不存在);END;
3、(3) 編寫一個(gè)PL/SQL塊,查詢名為“SMITH”的員工信息,并輸出其員工號(hào)、工資、部門號(hào)。如果該員工不存在,則插入一條新記錄,員工號(hào)為2007,員工名為“SMITH”,工資為1500,部門號(hào)為10。如果存在多個(gè)名為“SMITH”的員工,則輸出所有名為“SMITH”的員工號(hào)、工資和部門號(hào)。(提示:要使用NO_DATE_FOUND和TOO_MANY_ROWS兩個(gè)異常。)DECLARE V_empno emp.empno%type; V_sal emp.sal%type; V_deptno emp.deptno%type;BEGIN SELECT empno,sal,deptno INTO V
4、_empno,v_sal,v_deptno FROM emp WHERE ename=SMITH; DBMS_OUTPUT.PUT_LINE(v_empno| |v_sal| |v_deptno); EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO EMP(empno, ename,sal,deptno) VALUES(2007,SMITH,1500,10); WHEN TOO_MANY_ROWS THEN FOR v_emp IN (SELECT empno,sal,deptno FROM emp WHERE ename=SMITH) LOOP DB
5、MS_OUTPUT.PUT_LINE(v_emp.empno| | v_emp.sal| |v_emp.deptno); END LOOP; END; /(4) 創(chuàng)建一個(gè)存儲(chǔ)過程,以部門號(hào)為參數(shù),輸出該部門入職日期最早的員工姓名。(提示:如果不存在該部門,則顯示“無此部門或此部門無員工!” )CREATE OR REPLACE PROCEDURE CC(p_deptno emp.deptno%type)AS V_ename emp.ename%type;BEGIN select ename into v_ename from emp where deptno=p_deptno 實(shí)驗(yàn)內(nèi)容 and
6、 hiredate=(select min(hiredate) from emp where deptno=p_deptno); DBMS_OUTPUT.PUT_LINE(v_ename); exception when no_data_found then DBMS_OUTPUT.PUT_LINE('無此部門或此部門沒有員工!');END;(5) 創(chuàng)建一個(gè)函數(shù),以員工號(hào)為參數(shù),返回該員工的工資。CREATE OR REPLACE FUNCTION RET_SAL(p_empno emp.empno%type) RETURN emp.sal%typeAS v_sal emp.s
7、al%type;BEGIN SELECT sal INTO v_sal FROM emp WHERE empno=p_empno; RETURN v_sal;EXCEPTION WHEN NO_DATA_FOUND THEN RETURN -1;END; /(6) 編寫一個(gè)PL/SQL塊調(diào)用(5)中創(chuàng)建的函數(shù)。如果不存在該員工,則顯示“員工號(hào)不存在!”。 命令:DECLARE V_empno emp.deptno%type; V_sal emp.sal%type;BEGIN V_empno:=&x; V_sal:=ret_sal(v_empno); If v_sal=-1 then D
8、BMS_OUTPUT.PUT_LINE(員工號(hào)不存在); Else DBMS_OUTPUT.PUT_LINE(v_sal); End if; END;/(7) 創(chuàng)建一個(gè)函數(shù),以部門號(hào)為參數(shù),返回該部門的平均工資。CREATE OR REPLACE FUNCTION RET_AVGSAL(p_deptno emp.deptno%type) RETURN emp.sal%typeAS v_avgsal emp.sal%type;BEGIN SELECT avg(sal) INTO v_avgsal FROM emp WHERE deptno=p_deptno; IF v_avgsal IS NUL
9、L THEN RETURN -1; ELSE RETURN v_avgsal; END IF; END;/(8) 編寫一個(gè)PL/SQL塊調(diào)用(7)中創(chuàng)建的函數(shù)。如果不存在該部門,則顯示“部門號(hào)不存在!”。DECLARE V_deptno emp.deptno%type; V_avgsal emp.sal%type;BEGIN V_deptno:=&x; V_avgsal:=ret_avgsal(v_deptno); If v_avgsal=-1 then DBMS_OUTPUT.PUT_LINE(部門號(hào)不存在!); Else DBMS_OUTPUT.PUT_LINE(v_avgsal)
10、; End if; END;/(9) 創(chuàng)建一個(gè)函數(shù),以員工號(hào)為參數(shù),返回該員工所在部門的平均工資。CREATE OR REPLACE FUNCTION RET_AVGSAL_EMPNO(p_empno emp.empno%type) RETURN emp.sal%typeAS v_deptno emp.deptno%type; v_avgsal emp.sal%type;BEGIN SELECT deptno INTO v_deptno FROM emp WHERE empno=p_empno; SELECT avg(sal) INTO v_avgsal FROM emp WHERE dept
11、no=v_deptno; RETURN v_avgsal;EXCEPTION WHEN NO_DATA_FOUND THEN RETURN -1;END; /(10) 編寫一個(gè)PL/SQL塊調(diào)用(9)中創(chuàng)建的函數(shù)。如果不存在該部門,則顯示“員工號(hào)不存在!”。 DECLARE V_empno emp.empno%type;v_avgsal emp.sal%type; BEGIN V_empno:=&x; V_avgsal:= RET_AVGSAL_EMPNO(v_empno); If v_avgsal=-1 thenDBMS_OUTPUT.PUT_LINE(員工號(hào)不存在!); Else
12、DBMS_OUTPUT.PUT_LINE(v_avgsal); End if; END; /(11) 創(chuàng)建一個(gè)存儲(chǔ)過程,以一個(gè)整數(shù)為參數(shù),輸出工資最高的前幾個(gè)(參數(shù)值)員工的姓名。CREATE OR REPLACE PROCEDURE max_n(p_n int)AS v_i int:=1;BEGIN for v_emp in (SELECT * FROM emp ORDER BY sal desc) loop DBMS_OUTPUT.PUT_LINE(v_emp.ename); Exit when v_i=p_n; v_i:=v_i+1; end loop; END;/(12) 創(chuàng)建一個(gè)存儲(chǔ)過程,以兩個(gè)整數(shù)為參數(shù),輸出工資排序在兩個(gè)參數(shù)之間的員工姓名。CREATE OR REPLACE PROCEDURE min_m
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版堅(jiān)定初心專題教育培訓(xùn)協(xié)議版B版
- 2024年環(huán)保項(xiàng)目質(zhì)押擔(dān)保及反擔(dān)保合同范本解析3篇
- 2024年環(huán)保項(xiàng)目抵押融資擔(dān)保合同示范文本3篇
- 房屋租賃合同模板錦集九篇
- 小學(xué)二年級(jí)教學(xué)工作計(jì)劃
- 無人貨架項(xiàng)目效益分析報(bào)告
- 中國移動(dòng)CAD行業(yè)市場運(yùn)行現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 誰的尾巴中班教案
- 石油化工非標(biāo)設(shè)備項(xiàng)目可行性研究報(bào)告
- 2025-2031年中國海南省生態(tài)旅游行業(yè)發(fā)展前景預(yù)測(cè)及投資方向研究報(bào)告
- 廣告牌匾安裝施工方案
- 馬克思主義基本原理期末試題及答案
- 成人流行性感冒抗病毒治療專家共識(shí)(2022年)解讀
- 四年級(jí)上冊(cè)豎式計(jì)算300題及答案
- GB/T 13738.2-2017紅茶第2部分:工夫紅茶
- 傳感器期末結(jié)課作業(yè)
- 農(nóng)業(yè)機(jī)械維修業(yè)開業(yè)技術(shù)條件
- 主要零部件的設(shè)計(jì)和強(qiáng)度校核參考
- 物資使用情況反饋表
- 老視的機(jī)制及治療
- IATF16949事態(tài)升級(jí)處理程序
評(píng)論
0/150
提交評(píng)論