create or replace procedure proc_selectall
(
tableName in varchar2, --要查询的表名
pageNo in number, --当前页数
pageSizes in number, --没有条数
pageCount out number , --总页数
listSize out number , --总记录数
cursorList out sys_refcursor --输出数据游标
)
is
v_sql varchar2(2000);
v_page1 int:=(pageNo-1)*pageSizes+1;
v_page2 int:=pageNo*pageSizes;
begin
--设置总记录数
execute immediate ' select count(*) from ' || tableName into listSize;
--设置分页sql语句
v_sql:=' select * from (select rownum r ,s.* from ' || tableName || ' s) where r between ' || v_page1 || ' and ' || v_page2;
open cursorList for v_sql;
--设置总页数
pageCount:=ceil(listSize/pageSizes);
end;
--v_sql 的初始状态,只是把 between and 的值改变一下
--elect * from (select rownum r ,s.* from studentinfo s) where r between (3-1)*10 +1and 3*10;
Oracle中的分页存储过程
最新推荐文章于 2024-07-12 07:13:33 发布