【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;