第10章 游标和异常处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DBMS原理与应用 上机题 第10章 基于Scott用户的雇员表(EMP)的部门表(DEPT),按照部门分组打印各部门的名称、总人数、平均工资, 并分别打印当前部门的人员信息(雇员名、入职日期、职位、工资)。
DECLARE CURSOR c_e_d IS SELECT d.deptno,dname,COUNT(*) rs,AVG(sal) pjgz FROM emp e,dept d WHERE e.deptno=d.deptno GROUP BY d.deptno,dname; CURSOR c_e(p_dno dept.deptno%TYPE) IS SELECT * FROM emp WHERE deptno=p_dno; BEGIN FOR v_cur IN c_e_d LOOP dbms_output.put_line(' 部门名:'||v_cur.dname||'人数:'||v_cur.rs||'平均工 资:'||to_char(v_cur.pjgz,'99999.99')); FOR v_emp IN c_e(v_cur.deptno) LOOP dbms_output.put_line('姓名:'||v_emp.ename||'入职日期:'||v_emp.hiredate||'职 位:'||v_emp.job||'工资:'||v_emp.sal); END LOOP; dbms_output.new_line; END LOOP; END;
课程名称 题型 章
题目1
答案
难度系数 备注 课程名称 题型 章 题目2
答案
难度系数 备注
DBMS原理与应用 上机题 第10章 编写一游标以检查所指定雇员的薪水是否有效范围内。不同职位的薪水范围为: Clerk 1500-2500 Salesman 2501-3500 Manager 3501-4500 Others 4501 and above 如果薪水在此范围内,则显示消息"<雇员名> Salary is OK",否则,更新薪水为该范围内的最小值。 DECLARE CURSOR emp_cur IS SELECT ename,job,sal FROM emp WHERE empno=&eno FOR UPDATE NOWAIT; v_e emp_cur%ROWTYPE; BEGIN OPEN emp_cur; FETCH emp_cur INTO v_e; IF emp_cur%FOUND THEN CASE upper(v_e.job) WHEN 'CLERK' THEN IF v_e.sal BETWEEN 1500 AND 2500 THEN dbms_output.put_line(v_e.ename||' Salary is OK'); ELSE UPDATE emp SET sal=1500 WHERE CURRENT OF emp_cຫໍສະໝຸດ Baidur; END IF; WHEN 'SALESMAN' THEN IF v_e.sal BETWEEN 2501 AND 3500 THEN dbms_output.put_line(v_e.ename||' Salary is OK'); ELSE UPDATE emp SET sal=2501 WHERE CURRENT OF emp_cur; END IF; WHEN 'MANAGER' THEN IF v_e.sal BETWEEN 3501 AND 4500 THEN dbms_output.put_line(v_e.ename||' Salary is OK'); ELSE UPDATE emp SET sal=3501 WHERE CURRENT OF emp_cur; END IF; ELSE IF v_e.sal>=4501 THEN dbms_output.put_line(v_e.ename||' Salary is OK'); ELSE UPDATE emp SET sal=4501 WHERE CURRENT OF emp_cur; END IF; END CASE; ELSE