oracle-上机考试试题与答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、写一个pl/sql程序块:直接使用数据类型定义两个变量v_empno和v_ename,从scott模式下的emp表中检索某个员工的编号empno和姓名ename,存储到v_empno和v_ename,并输出此员工的编号和姓名。setserveroutputondeclaretypemerchandiseisrecord(v_empnonumber(30),v_enamevarchar2(30));record_merchandisemerchandise;beginselectempno,enameintorecord_merchandisefromempwhereempno='7369';dbms_output.put_line(record_merchandise.v_empno);dbms_output.put_line(record_merchandise.v_ename);end;2、写一个pl/sql程序块:根据scott模式下的emp表中的部门编号deptno字段的值,为姓名为SCOTT的雇员修改工资;若他所在部门号为10,则工资加100;若部门号为20,则工资加300;否则工资加400。setserveroutputondeclarev_deptnoemp.deptno%type;addsalemp.sal%type;salnumber;beginselectdeptnointov_deptnofromempwhereename='SCOTT';ifv_deptno='10'thenaddsal:=100;elsifv_deptno='20'thenaddsal:=300;elseaddsal:=400;endif;updateempsetsal=sal+addsalwhereename='SCOTT';dbms_output.put_line(sal);end;3、写一个pl/sql程序块:定义一个游标类型type_cursor,然后使用type_cursor定义变量ref_cur;根据scott模式下的emp表和dept表,使用游标变量ref_cur检索员工姓名和工作信息,并输出员工姓名和工作信息;使用游标变量ref_cur检索部门编号和部门名称信息,并输出部门编号和部门名称信息。setserveroutputondeclaretypetype_cursorisrefcursor;ref_curtype_cursor;mer_recemp%rowtype;ner_recdept%rowtype;beginopenref_curforselectename,jobfromemp;loopfetchref_curintomer_rec;exitwhenref_cur%notfound;dbms_output.put(mer_rec.ename||'');dbms_output.put(mer_rec.job);endloop;openref_curforselectdeptno,dnamefromdept;loopfetchref_curintoner_rec;exitwhenref_cur%notfound;dbms_output.put(ner_rec.deptno||'');dbms_output.put(ner_rec.dname);endloop;closeref_cur;end;4、写一个pl/sql存储过程:根据scott模式下的emp表,写一个带参数的存储过程proc(deptnoinnumber,sun_saloutnumber),输入部门编号,输出该部门的总工资信息。并写一个pl/sql程序块,测试该存储过程。createorreplaceproceduresearchmerch(v_deptnoinnumber,sun_saloutnumber)isbeginselect12*(sal+nvl(comm,0))intosun_salfromempwheredeptno=v_deptno;exceptionwhenno_data_foundthensun_sal:='0';end;5、写一个pl/sql程序块:根据scott模式下的emp表和dept表,输出每个部门的编号和部门名称,以及该部门下所有的雇员和雇员工资,及其该部门的总人数。输出效果如下:部门编号:--部门名称:--雇员姓名:--雇员工资:--该部门总人数:--declareCURSORc_deptISSELECTdeptno,dnameFROMdeptORDERBYdeptno;CURSORc_emp(p_deptVarCHAR2)ISSELECTename,salFROMempWHEREdeptno=p_deptORDERBYename;nnumber;BEGINFORr_deptINc_deptLOOPDBMS_OUTPUT.PUT_LINE('部门编号:'||r_dept.deptno||'--部门名称:'||r_dept.dname);n:=0;FORr_empINc_emp(r_dept.deptno)LOOPDBMS_OUTPUT.PUT_LINE('雇员姓名:'||r_emp.ename||'雇员工资:'||r_emp.sal);n:=n+1;ENDLOOP;DBMS_OUTPUT.PUT_LINE(r_dept.dname||'部门的总人数:'||n);ENDLOOP;END;6.创建一个语句级触发器CHECK_TIME,限定对表EMP的修改时间为周一至周五的早8点至晚5点。createorreplacetriggerCHECK_TIMEbeforeupdateorinsertordeleteonempbeginif(to_char(sysdate,'DY')in('sat','sun'))orto_char(sysdate,'HH24')'08'orto_char(sysdate,'HH24')='17'thenraise_application_error(-20500,'只能在工作时间对表操作!');endif;end;

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功