oracle 中通用的分页存储过程

 

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

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

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

--创建包

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;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值