日期:2014-05-16 浏览次数:21175 次
create or replace procedure emp_page
(
    tableName in varchar2, --表名
    page_size in number, --每页显示记录数
    pageNow in number, --当前页
    myrows out number, -- 总记录数
    myPageCount out number, --总页数
    my_cursor out sys_refcursor --返回的结果集
)
is
    v_sql varchar2(500);
    v_begin number := (pageNow-1)*page_size+1;
    v_end number := pageNow*page_size;
begin
    v_sql:='select * from (select e.*,rownum rn from (select * from '||tableName||')e where rownum<='||v_end||')where rn>='||v_begin;
    open my_cursor for v_sql;
    v_sql:='select count(*) from '||tableName;
    execute immediate v_sql into myrows;
    if mod(myrows,page_size)=0 then myPageCount:= myrows/page_size;
        else myPageCount:= myrows/page_size+1;
    end if;
end;
------解决方案--------------------
create or replace procedure emp_page(tableName in varchar2, --表名 page_size in number, --每页显示记录数 pageNow in number, --当前页
myrows out number, -- 总记录数 myPageCount out number, --总页数 my_cursor out my_new_pack.test_cursor --返回的结果集 ) is
改成成
create or replace procedure emp_page(tableName in varchar2, --表名
 page_size in number, --每页显示记录数
 pageNow in number, --当前页
 myrows out number, -- 总记录数
 myPageCount out number, --总页数
 my_cursor out my_new_pack.test_cursor --返回的结果集
 ) is