日期:2014-05-16 浏览次数:20485 次
知识点链接
1、oracle分页 2、游标使用
创建存储过程
--创建存储过程(startpoint 开始点、getnum 取出来数量) create or replace procedure copylimit(startpoint number,getnum number) as /*定义table*/ type emp_tab is table of myemp%rowtype; emp_rd emp_tab; /*定义游标*/ emp_cur sys_refcursor; --开启 begin --显示用户输入的开始点与要取出的数据量 dbms_output.put_line('开始点:'||startpoint||' 取出数量:'||getnum); --打开游标并且给游标赋值(执行分页查询) open emp_cur for select * from myemp where rowid in ( select rd from( select rownum rm,rd from( select rowid rd from myemp order by empno) where rownum < startpoint + getnum) where rm >= startpoint); --开启循环 loop --从游标里面取值bulk collect方式赋给emp_rd fetch emp_cur bulk collect into emp_rd limit 2; --循环遍历 for i in 1..emp_rd.count loop dbms_output.put_line('员工名:'||emp_rd(i).ename); end loop; exit when emp_cur%notfound; --结速循环 end loop; --关闭游标 close emp_cur; --结束 end;
执行存储过程
SQL> exec copylimt(2,4); 开始点:2 取出数量:4 员工名:ALLEN 员工名:WARD 员工名:JONES 员工名:MARTIN PL/SQL procedure successfully completed Executed in 0 seconds