




已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Oracle 作業(yè)題一.創(chuàng)建一個(gè)簡(jiǎn)單的PL/SQL程序塊 使用不同的程序塊組件工作 使用編程結(jié)構(gòu)編寫PL/SQL程序塊 處理PL/SQL程序塊中的錯(cuò)誤 1.編寫一個(gè)程序塊,從emp表中顯示名為“SMITH”的雇員的薪水和職位。declare v_emp emp%rowtype; begin select * into v_emp from emp where ename=SMITH; dbms_output.put_line(員工的工作是:|v_emp.job| ; 他的薪水是:|v_emp.sal); end; 2.編寫一個(gè)程序塊,接受用戶輸入一個(gè)部門號(hào),從dept表中顯示該部門的名稱與所在位置。方法一:(傳統(tǒng)方法)declarev_loc deptcp.dname%type;v_dname deptcp.dname%type;v_deptno deptcp.deptno%type;beginv_deptno :=&部門編號(hào);select loc,dname into v_loc,v_dname from deptcp where deptno=v_deptno;dbms_output.put_line(員工所在地是:|v_loc|;部門名稱是:|v_dname);exceptionwhen no_data_found then dbms_output.put_line(您輸入的部門編號(hào)不存在,請(qǐng)從新輸入,謝謝);end;方法二:(使用%rowtype) declare v_dept dept%rowtype; begin select * into v_dept from dept where deptno=&部門號(hào); dbms_output.put_line(v_dept.dname|-|v_dept.loc); end; 3.編寫一個(gè)程序塊,利用%type屬性,接受一個(gè)雇員號(hào),從emp表中顯示該雇員的整體薪水(即,薪水加傭金)。(*期末考試試題*)declare v_sal emp.sal%type; begin select sal+comm into v_sal from emp where empno=&雇員號(hào); dbms_output.put_line(v_sal); end; 4.編寫一個(gè)程序塊,利用%rowtype屬性,接受一個(gè)雇員號(hào),從emp表中顯示該雇員的整體薪水(即,薪水加傭金)。方式一:(錯(cuò)誤程序)(讓學(xué)生思考錯(cuò)在哪里?) declare v_emp empcp%rowtype; begin select * into v_emp from empcp where empno = &雇員編號(hào); dbms_output.put_line(整體薪水是:|v_emp.sal+v_m); end; declare v_emp emp%rowtype; begin select * into v_emp from emp where empno=&雇員號(hào); dbms_output.put_line(v_emp.sal+v_m); end; 5.某公司要根據(jù)雇員的職位來加薪,公司決定按下列加薪結(jié)構(gòu)處理: Designation Raise - Clerk 500 Salesman 1000 Analyst 1500 Otherwise 2000編寫一個(gè)程序塊,接受一個(gè)雇員名,從emp表中實(shí)現(xiàn)上述加薪處理。(*期末考試試題*)declare v_emp emp%rowtype; begin select * into v_emp from emp where ename=&name; if v_emp.job=CLERK then update emp set sal=sal+500 where empno=v_emp.empno; elsif v_emp.job=SALESMAN then update emp set sal=sal+1000 where empno=v_emp.empno; elsif v_emp.job=ANALYST then update emp set sal=sal+1500 where empno=v_emp.empno; else update emp set sal=sal+2000 where empno=v_emp.empno; end if; commit;end; 6.編寫一個(gè)程序塊,將emp表中雇員名全部顯示出來。 declare cursor v_cursor is select * from emp; begin for v_emp in v_cursor loop dbms_output.put_line(v_emp.ename); end loop; end; 7.編寫一個(gè)程序塊,將emp表中前5人的名字顯示出來。declare cursor v_cursor is select * from emp; v_count number :=1; begin for v_emp in v_cursor loop dbms_output.put_line(v_emp.ename); v_count := v_count+1; exit when v_count5; end loop; end; 8.編寫一個(gè)程序塊,接受一個(gè)雇員名,從emp表中顯示該雇員的工作崗位與薪水,若輸入的雇員名不存在,顯示“該雇員不存在”信息。(*期末考試試題*)declare v_emp emp%rowtype; my_exception Exception; begin select * into v_emp from emp where ename=&name; raise my_exception; exception when no_data_found then dbms_output.put_line(該雇員不存在!); when others then dbms_output.put_line(v_emp.job|-|v_emp.sal); end; 9.接受兩個(gè)數(shù)相除并且顯示結(jié)果,如果第二個(gè)數(shù)為0,則顯示消息“除數(shù)不能為0”(課堂未講)。declare v_dividend float; v_divisor float; v_result float; my_exception Exception; begin v_dividend:=&被除數(shù); v_divisor:=&除數(shù); v_result:=v_dividend/v_divisor; raise my_exception; exception when my_exception then dbms_output.put_line(v_result); when others then dbms_output.put_line(除數(shù)不能為0); end;二.聲明和使用游標(biāo) 使用游標(biāo)屬性 使用游標(biāo)For循環(huán)工作 聲明帶參數(shù)的游標(biāo) (使用FOR UPDATE OF和CURRENT OF子句工作)1. 通過使用游標(biāo)來顯示dept表中的部門名稱。declare cursor v_cursor is select * from dept; begin for v_dept in v_cursor loop dbms_output.put_line(v_dept.dname); end loop; end;2. 使用For循環(huán),接受一個(gè)部門號(hào),從emp表中顯示該部門的所有雇員的姓名,工作和薪水。declare cursor v_cursor is select * from emp where deptno=&部門號(hào); begin for v_emp in v_cursorloop dbms_output.put_line(v_emp.ename|-|v_emp.job|-|v_emp.sal); end loop; end;3. 使用帶參數(shù)的游標(biāo),實(shí)現(xiàn)第2題。declare cursor v_cursor(p_deptno number) is select * from emp where deptno=p_deptno; v_deptno number(2); begin v_deptno:=&部門號(hào); for v_emp in v_cursor(v_deptno) loop dbms_output.put_line(v_emp.ename|-|v_emp.job|-|v_emp.sal); end loop; end; 4.編寫一個(gè)PL/SQL程序塊,從emp表中對(duì)名字以“A”或“S”開始的所有雇員按他們基本薪水的10%給他們加薪。declare cursor v_cursor is select * from emp; begin for v_emp in v_cursor loop if v_emp.ename like A% then update emp set sal=sal+sal*0.1 where empno=v_emp.empno; elsif v_emp.ename like S% then update emp set sal=sal+sal*0.1 where empno=v_emp.empno; end if; commit; end loop; end;5. emp表中對(duì)所有雇員按他們基本薪水的10%給他們加薪,如果所增加后的薪水大于5000盧布,則取消加薪。declare cursor v_cursor is select * from emp;begin for v_emp in v_cursor loop if v_emp.sal * 1.1 5000 then update emp set sal = sal * 1.1 where empno = v_emp.empno; end if; commit; end loop;end;三,創(chuàng)建PL/SQL記錄和PL/SQL表 創(chuàng)建過程 創(chuàng)建函數(shù) 3.創(chuàng)建一個(gè)過程,能向dept表中添加一個(gè)新記錄.(in參數(shù))create or replace procedureinsert_dept(dept_no in number,dept_name in varchar2,dept_loc in varchar2) is begin insert into dept values(dept_no,dept_name,dept_loc); end;調(diào)用該存儲(chǔ)過程: begin insert_dept(50,技術(shù)部,武漢); end; 4.創(chuàng)建一個(gè)過程,從emp表中帶入雇員的姓名,返回該雇員的薪水值。(out參數(shù))然后調(diào)用過程。create or replace procedure find_emp3(emp_name in varchar2,emp_sal out number) is v_sal number(5); begin select sal into v_sal from emp where ename = emp_name; emp_sal:=v_sal; exception when no_data_found then emp_sal :=0; end;調(diào)用:declare v_sal number(5); begin find_emp3(ALLEN,v_sal); dbms_output.put_line(v_sal); end; 5.編寫一個(gè)程序塊,接受一個(gè)雇員號(hào)與一個(gè)百分?jǐn)?shù),從emp表中將該雇員的薪水增加輸入的百分比(*課堂沒講)。 (利用過程,in out 參數(shù))create or replace procedure update_sal(emp_no in number,parsent in float) is begin update emp set sal=sal+sal*parsent where empno=emp_no; end;調(diào)用: begin update_sal(7499,0.5); end; 6.創(chuàng)建一個(gè)函數(shù),它以部門號(hào)作為參數(shù)且返回那個(gè)部門的所有的所有雇員的整體薪水。 然后調(diào)用此函數(shù)。 7.創(chuàng)建一個(gè)函數(shù),它以部門號(hào)作為參數(shù)傳遞并且使用函數(shù)顯示那個(gè)部門名稱與位置。然后調(diào)用此函數(shù)。create or replace function find_dept(dept_no number) return dept%rowtype is v_dept dept%rowtype; begin select * into v_dept from dept where deptno=dept_no; return v_dept; end;調(diào)用函數(shù):declare v_dept dept%rowtype; begin v_dept:=find_dept(30); dbms_output.put_line(v_dept.dname|-|v_dept.loc); end;四,創(chuàng)建程序包 創(chuàng)建程序件 創(chuàng)建觸發(fā)器 1.創(chuàng)建在dept表中插入和刪除一個(gè)記錄的數(shù)據(jù)包,它且有一個(gè)函數(shù)(返回插入或刪除的部門名稱)和兩個(gè)過程。然后調(diào)用包。create or replace package pack_1 is procedure find_emp(emp_no in number,emp_name out varchar2); procedure find_emp1(emp_name in varchar2,emp_no out number); function find_dname(dept_no number) return varchar2; end pack_1; create or replace package body pack_1is function find_dname(dept_no number) return varchar2is v_dname varchar2(20); begin select dname into v_dname from dept where deptno=dept_no; retrun v_dname; end;end pack_1;調(diào)用包:declare v_dname varchar2(20); begin v_dname:=pack_1.find_dname(50); dbms_output.put_line(v_dname); end; 3.使用單獨(dú)過程打開游標(biāo)變量,將dept表中的記錄顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店中餐擺臺(tái)培訓(xùn)
- 重卡銷售培訓(xùn)
- 痛風(fēng)病人飲食護(hù)理
- 職業(yè)安全健康管理
- 財(cái)會(huì)合規(guī)培訓(xùn)
- 腫瘤護(hù)理專家共識(shí)
- 銷售業(yè)績(jī)分解培訓(xùn)
- 加油站全流程診斷體系構(gòu)建
- 稽核監(jiān)察財(cái)務(wù)培訓(xùn)
- 互聯(lián)網(wǎng)+教育精準(zhǔn)扶貧:2025年實(shí)踐案例分析報(bào)告
- 優(yōu)秀物業(yè)管理項(xiàng)目評(píng)選方案
- 貴州大方富民村鎮(zhèn)銀行股份有限公司(籌)招聘上岸提分題庫(kù)3套【500題帶答案含詳解】
- GB/T 5470-2008塑料沖擊法脆化溫度的測(cè)定
- GB/T 40998-2021變性淀粉中羥丙基含量的測(cè)定分光光度法
- 圖書管理系統(tǒng)畢業(yè)論文參考文獻(xiàn)精選,參考文獻(xiàn)
- 中國(guó)當(dāng)代舊體詩(shī)選讀幻燈片
- 吉林省全省市縣鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心基本公共衛(wèi)生服務(wù)醫(yī)療機(jī)構(gòu)信息名單目錄995家
- 倔強(qiáng)的小紅軍-精講版課件
- 信息隱藏與數(shù)字水印課件(全)全書教學(xué)教程完整版電子教案最全幻燈片
- 公開招聘社區(qū)居委專職工作人員考試筆試、面試題集及相關(guān)知識(shí)(11套試題含答案)
- 中職數(shù)學(xué)基礎(chǔ)模塊下冊(cè)《等差數(shù)列》ppt說課稿
評(píng)論
0/150
提交評(píng)論