




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫開發(fā)技術(shù)課程之實驗四pl/sql的游標(biāo)和異常處理一、 實驗?zāi)康恼莆沼螛?biāo)和參數(shù)化游標(biāo)的使用方法。1. 掌握游標(biāo) for 循環(huán)、select for update 游標(biāo)和 where current of子句的使用方法。2. 掌握正確使用異常處理的方法。二、 實驗內(nèi)容和要求1. 編寫匿名 pl/sql 程序塊,根據(jù) 用戶輸入 的部門編號 實現(xiàn)在 pl/sql 中逐行顯示 emp表中該部門員工的 工資級別 。工資級別是:當(dāng)工資為空時,為空,工資在 1000 元以下的為低,在1000 和 3000 之間的為中,高于3000 元的為高。要求使用參數(shù)化游標(biāo)。運行過程和效果如下:輸入 dept_id
2、的值: 10原值 9: v_deptno:= &dept_id;新值 9: v_deptno:= 10;7782,clark,2450,中7839,king,5000, 高7934,miller,1300, 中pl/sql 過程已成功完成。set serveroutput on;declarevempno emp.empno%type;vname emp.job%type;vsal emp.sal%type;vdept_id emp.empno%type;vlel varchar2(20);cursor c1 is select empno,ename,sal from emp whe
3、re deptno=&dept_id;begin open c1; loop fetch c1 into vempno,vname,vsal; exit when c1%notfound; case when nvl(vsal,0)=0 then vlel:= ; when nvl(vsal,0)3000 then vlel:=高; else vlel:=中; end case; dbms_output.put_line(to_char(vempno)|,|vname|,|to_char(vsal)|,|to_char(vlel); end loop ;end;/2、創(chuàng)建一個 pl/s
4、ql塊,要求根據(jù)用戶輸入的員工編號(empno),查詢出 emp表中該編號員工所在的部門編號(deptno) 及其直接管理者的姓名(ename),要有異常處理( 該員工編號不存在時或者該員工是總裁無直接主管時)。查詢效果形如下:輸入 員工編號的值: 7788原值 6: v_empno:= & 員工編號 ;新值 6: v_empno:= 7788;員工編號部門編號上司姓名-7788 20 jonespl/sql 過程已成功完成?;蛘撸狠斎?員工編號的值: 8001原值 6: v_empno:= & 員工編號 ;新值 6: v_empno:= 8001;該員工不存在!pl/sql
5、過程已成功完成。或者:輸入 員工編號的值: 7839原值 7: v_empno:= & 員工編號 ;新值 7: v_empno:= 7839;該員工是總裁,無直接主管!pl/sql 過程已成功完成。set serveroutput on; declare v_empno emp.empno%type:=& 員工姓名 ; v_ename emp.ename%type; v_deptno emp.deptno%type; v_mgr emp.mgr%type; begin select ename,deptno,mgr into v_ename,v_deptno,v_mgr fro
6、m emp where empno=v_empno; dbms_output.put_line(員工姓 名 |v_ename|部 門編 號|v_deptno|主管|v_mgr); exception when no_data_found then dbms_output.put_line(沒有該員工 ); end; / 3、*創(chuàng)建一個 pl/sql塊,根據(jù)輸入的部門編號,逐條輸出emp表中該部門每位員工的序號、編號 (empno)、姓名 (ename)和工資 (sal) 信息,要求用游標(biāo)實現(xiàn)。信息顯示格式要求如下:輸入 dept_id 的值: 10原值 7: v_deptno:= &d
7、ept_id;新值 7: v_deptno:= 10;序號編號姓名工資1 7782 clark 24502 7839 king 50003 7934 miller 1300pl/sql 過程已成功完成。declarecursor emp_cur isselect empno,ename,sal from emp where deptno=&v_deptno;v_deptno emp.deptno%type;v_empno emp.empno%type;v_ename emp.ename%type;v_sal emp.sal%type;beginopen emp_cur;dbms_out
8、put.put_line(編號姓名工資);loopfetch emp_cur into v_empno,v_ename,v_sal;exit when emp_cur%notfound;dbms_output.put_line(v_empno| |v_ename| |v_sal);end loop;close emp_cur;end;4、a 創(chuàng)建一個 pl/sql塊,每輸出 dept表的一條記錄( deptno,dname,loc)后,隨后輸出該部門的員工記錄(empno,ename,hiredate,sl),輸出格式形如下:部門編號 :10 部門名稱 :accounting 部門位置 :ne
9、w york-7782 clark 06-09-81 $24507839 king 11-17-81 $50007934 miller 01-23-82 $1300部門編號 :20 部門名稱 :research 部門位置 :dallas-7369 smith 12-17-80 $8007566 jones 04-02-81 $29757788 scott 04-19-87 $30007876 adams 05-23-87 $11007902 ford 12-03-81 $3000部門編號 :30 部門名稱 :sales 部門位置 :chicago-7499 allen 02-20-81 $16
10、007521 ward 02-22-81 $12507654 martin 09-28-81 $12507698 blake 05-01-81 $28507844 turner 09-08-81 $15007900 james 12-03-81 $950部門編號 :40 部門名稱 :operations 部門位置 :boston-pl/sql 過程已成功完成。declare vdeptno dept.deptno%type; vdname dept.dname%type; vloc dept.loc%type; cursor dept_cursor is select deptno,dname
11、,loc from dept; begin for dept_record in dept_cursor loop fetch dept_cursor into vdeptno,vdname,vloc; dbms_output.put_line(vdeptno| |vdname| |vloc);end loop; end; / 5、*利用 ref游標(biāo)(游標(biāo)變量)在student 表中完成以下組合查詢?nèi)蝿?wù): 根據(jù)姓名、所在系任意組合查詢學(xué)員信息。輸出格式形如下:輸入 name 的值: 王名原值 9: l_name := &name;新值 9: l_name := 王名;輸入 dept 的
12、值: ma原值 10: l_sdept := &dept;新值 10: l_sdept := ma;select * from student where 1=1 and sname= 王名and sdept=ma95003, 王名, 女, 18, mapl/sql 過程已成功完成。declarelname students.sname%type;lsdept students.sdept%type;lsql varchar2(200);refcur sys_rescursor;sturec student%rowtype;beginlname:=&name;lsdept:=&
13、amp;dept;lsql:=select * from student where 1=1;if lname is not null thenlsql:=lsql|and sname=附加題: *1. 利用 select for update 游標(biāo)和 update 語句中的 where current of子句完成以下任務(wù):把所有年齡小于18 歲的學(xué)員成績增加10 分。2. 有這么一張表t_t ,他只有一個number(8) 的字段 a,由于在創(chuàng)建表時忘記設(shè)置主鍵約束,導(dǎo)致表中有很多重復(fù)的記錄。請你編寫一個程序,將表中重復(fù)的記錄保留一個,刪除其余的。create table t_t(a number(8); insert into t_t values(1); insert into t_t values(3); insert into t_t values(6); insert into t_t values(1); insert into t_t values(6); insert into t_t values(5); insert into t_t values(3); insert into t_t values(1); insert into t_t values(1); - 可以通過查看表
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車安全技術(shù)的創(chuàng)新研究試題及答案在2025年
- 航空證券筆試題目及答案
- 潮流智商測試題及答案
- 男生測試題大全及答案
- 注冊土木工程師考試整合知識考點試題及答案
- 物業(yè)運營考試題及答案
- 幼兒園數(shù)學(xué)數(shù)列規(guī)律考試試題及答案
- 消費金融行業(yè)2025年用戶畫像精準(zhǔn)營銷:政策法規(guī)與合規(guī)風(fēng)險分析報告
- 新能源汽車技術(shù)的透明度與公信力試題及答案
- 智能電網(wǎng)與新能源汽車互動的技術(shù)研究試題及答案
- 2025年上半年廣東東莞市委辦公室招聘勞務(wù)派遣人員重點基礎(chǔ)提升(共500題)附帶答案詳解
- GB/T 35267.4-2025清洗消毒器第4部分:內(nèi)鏡清洗消毒器
- 規(guī)范佩戴紅領(lǐng)巾
- TCAWAORG 032-2024 家庭醫(yī)生遠(yuǎn)程與互聯(lián)網(wǎng)健康服務(wù)規(guī)范
- 2025年春季學(xué)期 形勢與政策講稿第五講-從教育大國邁向教育強國
- 腦小血管病共識-課件
- 大華單元門口機使用說明書
- 新疆烏魯木齊市米東區(qū)2024-2025學(xué)年九年級上學(xué)期期中數(shù)學(xué)試卷(含答案)
- 第一章整式的乘法單元(教學(xué)設(shè)計)-七年級數(shù)學(xué)下冊同步備課系列(湘教版2024)
- 水井清理淤泥施工方案
- 2024年黑龍江哈爾濱市中考英語真題卷及答案解析
評論
0/150
提交評論