版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
答案实验五:Oracle编程(一)答案实验五:Oracle编程(一)答案实验五:Oracle编程(一)V:1.0精细整理,仅供参考答案实验五:Oracle编程(一)日期:20xx年X月《Oracle技术》实验报告(五)成绩实验名称Oracle编程(一)姓名学号班级实验目的(1)熟练掌握编写和调试PL/SQL块的方法。(2)熟练掌握编写和调试存储过程方法。(3)熟练掌握编写和调试函数方法。(4)熟练掌握各种控制结构语句的使用。实验内容编写一个PL/SQL块,输出emp表中所有员工的员工名、员工号、工资和部门号。BEGINFORv_empIN(SELECT*FROMEMP)LOOP||’‘||||’‘||||’‘||;ENDLOOP;END;/创建一个存储过程,以员工号为参数,输出该员工的工资。(提示:如果不存在该员工,则显示“员工号不存在”)CREATEORREPLACEPROCEDUREOUTPUT_SAL(p_empno%type)ASV_sal%type;BEGINSELECTsalINTOv_salFROMempWHEREempno=p_empno;(v_sal);EXCEPTIONWHENNO_DATA_FOUNDTHEN(‘员工号不存在’);END;编写一个PL/SQL块,查询名为“SMITH”的员工信息,并输出其员工号、工资、部门号。如果该员工不存在,则插入一条新记录,员工号为2007,员工名为“SMITH”,工资为1500,部门号为10。如果存在多个名为“SMITH”的员工,则输出所有名为“SMITH”的员工号、工资和部门号。(提示:要使用NO_DATE_FOUND和TOO_MANY_ROWS两个异常。)DECLAREV_empno%type;V_sal%type;V_deptno%type;BEGINSELECTempno,sal,deptnoINTOV_empno,v_sal,v_deptnoFROMempWHEREename=’SMITH’;(v_empno||’’||v_sal||’’||v_deptno);EXCEPTIONWHENNO_DATA_FOUNDTHENINSERTINTOEMP(empno,ename,sal,deptno)VALUES(2007,’SMITH’,1500,10);WHENTOO_MANY_ROWSTHENFORv_empIN(SELECTempno,sal,deptnoFROMempWHEREename=’SMITH’)LOOP||’‘||||’‘||;ENDLOOP;END;/创建一个存储过程,以部门号为参数,输出该部门入职日期最早的员工姓名。(提示:如果不存在该部门,则显示“无此部门或此部门无员工!”)CREATEORREPLACEPROCEDURECC(p_deptno%type)ASV_ename%type;BEGINselectenameintov_enamefromempwheredeptno=p_deptno实验内容andhiredate=(selectmin(hiredate)fromempwheredeptno=p_deptno);(v_ename);exceptionwhenno_data_foundthen('无此部门或此部门没有员工!');END;创建一个函数,以员工号为参数,返回该员工的工资。CREATEORREPLACEFUNCTIONRET_SAL(p_empno%type)RETURN%typeASv_sal%type;BEGINSELECTsalINTOv_salFROMempWHEREempno=p_empno;RETURNv_sal;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN-1;END;/编写一个PL/SQL块调用(5)中创建的函数。如果不存在该员工,则显示“员工号不存在!”。命令:DECLAREV_empno%type;V_sal%type;BEGINV_empno:=&x;V_sal:=ret_sal(v_empno);Ifv_sal=-1then(’员工号不存在’);Else(v_sal);Endif;END;/创建一个函数,以部门号为参数,返回该部门的平均工资。CREATEORREPLACEFUNCTIONRET_AVGSAL(p_deptno%type)RETURN%typeASv_avgsal%type;BEGINSELECTavg(sal)INTOv_avgsalFROMempWHEREdeptno=p_deptno;IFv_avgsalISNULLTHENRETURN-1;ELSERETURNv_avgsal;ENDIF;END;/编写一个PL/SQL块调用(7)中创建的函数。如果不存在该部门,则显示“部门号不存在!”。DECLAREV_deptno%type;V_avgsal%type;BEGINV_deptno:=&x;V_avgsal:=ret_avgsal(v_deptno);Ifv_avgsal=-1then(’部门号不存在!’);Else(v_avgsal));Endif;END;/创建一个函数,以员工号为参数,返回该员工所在部门的平均工资。CREATEORREPLACEFUNCTIONRET_AVGSAL_EMPNO(p_empno%type)RETURN%typeASv_deptno%type;v_avgsal%type;BEGINSELECTdeptnoINTOv_deptnoFROMempWHEREempno=p_empno;SELECTavg(sal)INTOv_avgsalFROMempWHEREdeptno=v_deptno;RETURNv_avgsal;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN-1;END;/编写一个PL/SQL块调用(9)中创建的函数。如果不存在该部门,则显示“员工号不存在!”。DECLAREV_empno%type;v_avgsal%type;BEGINV_empno:=&x;V_avgsal:=RET_AVGSAL_EMPNO(v_empno);Ifv_avgsal=-1then(‘员工号不存在!’);Else(v_avgsal);Endif;END;/创建一个存储过程,以一个整数为参数,输出工资最高的前几个(参数值)员工的姓名。CREATEORREPLACEPROCEDUREmax_n(p_nint)ASv_iint:=1;BEGINforv_empin(SELECT*FROMempORDERBYsaldesc)loop;Exitwhenv_i=p_n;v_i:=v_i+1;endloop;END;/创建一个存储过程,以两个整数为参数,输出工资排序在两个参数之间的员工姓名。CREATEORREPLACEPROCEDUREmin_max(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论