主页 > 知识库 > 数据库 > Oracle >

oracle存储过程分页处理

来源:中国IT实验室 作者:佚名 发表于:2012-09-03 10:10  点击:
oracle存储过程分页处理 知识点链接 1、oracle分页 2、游标使用 创建存储过程 [sql] --创建存储过程(startpoint 开始点、getnum 取出来数量) create or replace procedure copylimit(startpoint number,getnum number) as /*定义table*/ type emp_tab is
  oracle存储过程分页处理
   
    知识点链接
   
    1、oracle分页
   
    2、游标使用
   
    创建存储过程
   
    [sql]
   
    --创建存储过程(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 1emp_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]
   
    SQL> exec copylimt(2,4);
   
    开始点:2 取出数量:4
   
    员工名:ALLEN
   
    员工名:WARD
   
    员工名:JONES
   
    员工名:MARTIN
   
    PL/SQL procedure successfully completed
   
    Executed in 0 seconds

    有帮助
    (1)
    100%
    没帮助
    (0)
    0%