分类分类
2015-06-28 00:00作者:网管联盟
create or replace package mypack
as
type cursor testCursor is ref cursor;
end mypack;
--tableName表名, pageSize每页显示的数量,pageNow第几页,rows总页数,pageCount总页数,p_cursor游标
create or replace procedure fenye
(tableName in varchar2, pageSize in number, pageNow in number, rows out number, pageCount out number, p_cursor out mypack.testCursor)
is
declare
--定义sql语句
v_sql varchar2(1000);
--定义2个整数记录上一页
v_begin number := (pageNow - 1) * pageSize + 1;
v_end number := pageNow * pageSize;
begin
v_sql := 'select * from (select t.*, rownum r from (select * from '|| tableName ||') t where rownum<='|| v_end ||') where r>='|| v_begin ;
--将游标和sql语句关联起来
open p_cursor for v_sql;
--计算rows和pageCount;
v_sql := 'select count(*) from' || tableName;
--执行sql语句,并将返回的值付给 rows;
execute immediate v_sql into rows;
pageCount := (rows + pageSize - 1) / pageSize; --总页数;
close p_cursor;
end;
相关文章