【雪野实训记录】Oracle数据库 T6作业——游标管理

前端之家收集整理的这篇文章主要介绍了【雪野实训记录】Oracle数据库 T6作业——游标管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

题目:

一、按下列要求完成

部门表

create table dept(

deptno varchar2(10)Primary key,--部门编号

dname varchar2(20), --部门名称

loc varchar2(200) --部门地址

员工表

create table emp(

empId varchar2(10) primary key,

ename varchar2(20),--姓名

deptnovarchar2(10),--部门编号

job varchar2(20),--工种

hiredate date,--参加工作日期

sal number(8,2)--工资

1:任意执行一个update操作,用隐式游标sql属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况。

2: 使用游标和loop循环来显示所有部门的名称

3:使用游标和while循环来显示所有部门的的地理位置(用%found属性

4:接收用户输入的部门编号,用for循环和游标,打印出此部门的所有雇员的所有信息(使用循环游标)

5:向游标传递一个工种,显示此工种的所有雇员的所有信息(使用参数游标)



解析:

--1:任意执行一个 update操作,用隐式游标sql属性%found,%isopen观察update语句的执行情况。 begin update emp set sal=sal*1.5 where empno='7369'; if sql%found then dbms_output.put_line('语句影响了一行或多行'); end if; if sql%notfound then dbms_output.put_line('语句没有影响任何行'); end if; if sql%isopen then dbms_output.put_line('游标的打开状态为:false'); else dbms_output.put_line('游标的打开状态为:true'); end if; dbms_output.put_line('语句影响的行数位'||sql%rowcount); end; --2: 使用游标和loop循环来显示所有部门的名称 declare v_dname dept.dname%type; cursor dept_cur is select dname from dept; begin open dept_cur; loop fetch dept_cur into v_dname; exit when dept_cur%notfound; dbms_output.put_line(v_dname); end loop; close dept_cur; end; --3:使用游标和while循环来显示所有部门的的地理位置(用%found属性) declare v_loc dept.loc%type; cursor dept_cur is select loc from dept; begin open dept_cur; fetch dept_cur into v_loc; while dept_cur%found loop dbms_output.put_line(v_loc); fetch dept_cur into v_loc; end loop; end; --4:接收用户输入的部门编号,用for循环和游标,打印出此部门的所有雇员的所有信息(使用循环游标) declare cursor emp_cur is select * from emp where deptno = '&deptno'; begin for empinfo in emp_cur loop dbms_output.put_line(empinfo.empno||' '||empinfo.ename||' '||empinfo.job||' '||empinfo.mgr||' '||empinfo.hiredate||' '||empinfo.sal||' '||empinfo.comm||' '||empinfo.deptno); end loop; end; --5:向游标传递一个工种,显示此工种的所有雇员的所有信息(使用参数游标) declare cursor cur_job(V_JOB EMP."JOB"%type) is select * from EMP where job=V_JOB; V_EMP EMP%ROWTYPE; begin open CUR_JOB('CLERK'); loop fetch CUR_JOB into V_EMP; exit when CUR_JOB%NOTFOUND; dbms_output.put_line('编号:' || V_EMP.empno || ' 姓名:' || V_EMP.ename || ' 职位:' || V_EMP.job || ' 上级领导编号:' || V_EMP.mgr || ' 雇佣日期:' || V_EMP.hiredate || ' 工资:' ||V_EMP.sal || ' 奖金:' || V_EMP.comm || ' 部门:' || V_EMP.deptno); end loop; close cur_job; end;

原文链接:https://www.f2er.com/oracle/208142.html

猜你在找的Oracle相关文章