您的位置:首页 > 数据库 > Oracle

oracle 中通用的分页存储过程

2011-08-31 17:35 357 查看
 
----------------------------------------------------------------------------------

-------------------------------(通用)分页的存储过程----------------------

----------------------------------------------------------------------------------

--创建包

create or replace package page_package

as

type p_cursor is ref cursor;

end page_package;

 

--创建存储过程

create or replace procedure fenye_proc

(

      --定义要查询的表

      tableName in varchar2,

      --当前页数

      currentPage in number,

      --每页显示的记录数

      pagesize in number,

      --总记录数

      totalCount out number,

      --总页数

      totalPage out number,

      --返回的结果集

      page_cursor out page_package.p_cursor

)as  -- 声明变量部分

   --存放 SQL 语句

   v_sql varchar2(200);

   --页码开始

   v_begin number := (currentPage - 1)*pagesize + 1;

   --页码结束

   v_end number := pagesize*currentPage;

begin  -- 语句执行块部分

     --分页的 SQL 语句

     v_sql := 'select * from (select a.*,rownum rn from (select * from '||tableName||') a where rownum <= '||v_end||') where rn >='||v_begin;

     --打开游标,并让游标执行结果集

     open page_cursor for v_sql;

     --求总记录数

     v_sql := 'select count(*) from '||tableName;

     execute immediate v_sql into totalCount;

     -- 求总页数

     if mod(totalCount,pagesize)=0 then

         totalPage := totalCount/pagesize;

     else

         totalPage := totalCount/pagesize + 1;

     end if;

end;

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 oracle sql