日期:2014-05-16  浏览次数:20369 次

oracle存储过程分页与返回多结果集
plsql代码:



SQL> create or replace package testpackage as        --创建包用来放游标
  2  type test_cursor is ref cursor;                               --定义的游标test_cursor,ref curosr用法还不是很熟
  3  end testpackage;
  4  /

Package created



SQL> create or replace procedure fenye(
  2                                    v_tablename in varchar2,    --输入的表名,根据不同的表来分页
  3                                    v_pagenow   in number,      --分页时当前页码
  4                                    v_pagesize  in number,       --每页的页数
  5                                    v_mypagecount out number,        --计算出一共多少页
  6                                    v_myrows          out number,        --计算表中一共多少行
  7                                    p_cursor out testpackage.test_cursor      --要输出的游标
  8                                    )
  9  is
10    v_sql   varchar2(1000);
11    v_begin number:=(v_pagenow-1)*v_pagesize+1;   --计算初始页,既从哪页开始
12    v_end   number:=v_pagenow*v_pagesize;              --计算结束页,既从哪页结束


13  begin       --
14    v_sql:='select *
15                 from   (select b.*,
16                                      rownum as rn
17                            from  (select *
18                                      from '||v_tablename||'
19         &