【PLSQL】动态游标 分别拿出emp、dept表中所有的数据

--PLSQL 动态游标 分别拿出emp、dept表中所有的数据
declare
  c1 sys_refcursor;--声明一个动态游标
  e emp%rowtype;--声明一个emp表的行记录数据类型
  d dept%rowtype;--声明一个dept表的行记录数据类型
begin
  open c1 for select * from emp;--打开一个结果集
  
  loop--循环开始
    fetch c1 into e;--每次循环取一行,并把光标下移一行。进行依次获取每一行数据
  exit when c1%notfound;--当找不到下一行时,执行循环退出
  --每次循环输出一下每一行的数据
    dbms_output.put_line(rpad(e.empno,6)||rpad(e.ename,10)||rpad(e.job,12)||rpad(rpad(nvl(e.mgr,0),4),6)||rpad(to_char(e.hiredate,'yyyy-mm-dd day'),18)||rpad(e.sal,6)||rpad(nvl(e.comm,0),6)||e.deptno);
  end loop;--达到循环退出条件,执行此语句
  
  close c1;
  --关闭上面被打开的游标结果集的游标(光标)。plsql程序中上一个游标不结束,无法继续下一个游标的开启和获取数据。
  
  
  
  dbms_output.put_line('```````````````````````````````````````````````');
  
  
  
  open c1 for select * from dept;
  
  loop
    fetch c1 into d;
  exit when c1%notfound;
    dbms_output.put_line(rpad(d.deptno,6)||rpad(d.dname,20)||d.loc);
  end loop;
  
  close c1;
end;

 


Oracle使用PLSQL获取表数据结果集-1
posted @ 2021-09-02 12:06  Rkey  阅读(12)  评论(0编辑  收藏  举报