听韩老师的oracle的分页存储过程
--创建一个包,在该包中,我定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页过程
create or replace produrce fenye --fenye
(tableName in varchar2,
pageSize in number,
pageNow in number,
myRows out number,--总记录数
myPageCount out number,--总页数
p_cursor out tespackage.test_cursor,--返回的记录集
) is
--定义部分
--定义sql语句 字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;
begin
--执行部分
v_sql:='select * from
( select t1.*,rownum rn from
( select * from '||tableName||') t1 --第一个select语句出来的表的视图t1
where rownum<='||v_end||'
)
wherw rn>='||v_begin';
--把游标和sql关联
open p_cursor for v_sql;
--计算myRows和myPageCount
--组织一个sql语句
v_sql:='select count(*) from '||tableName';
--执行sql语句,并把返回的值赋给myRows
execute immediate v_sql into myRows;
if mod(myRows,pageSize)=0 then
myPageCount:=myRows/pageSize;
else
myPageCount:=myRows/pageSize+1;
end if;
--关闭游标
close p_cursor;
end;