在网上问大数据量分页怎样处理,很多人都推荐用存储过程分页
再网上找的一个分页存储过程,在数据库里执行的时候出错:Warning: compiled but with compilation errors
create or replace package MaterialManage is
TYPE T_CURSOR IS REF CURSOR;
Procedure Per_QuickPage
(
TbName in varchar2, --表名
FieldStr in varchar2, --字段集
RowFilter in varchar2, --过滤条件
SortStr in varchar2, --排序集
RownumFieldStr in varchar2, --分页条件
TotalCount out number, --总记录数
Cur_ReturnCur out T_CURSOR --返回的游标
);
end MaterialManage;create or replace package body MaterialManage is
Procedure Per_QuickPage
(
TbName in varchar2, --表 名
FieldStr in varchar2, --字段集
RowFilter in varchar2, --过滤条件
SortStr in varchar2, --排序集
MinRowNum in number, --分页小值
MaxRowNum in number, --分页大值
TotalCount out number, --总记录数
Cur_ReturnCur out T_CURSOR
)
is
v_SourceTb1 varchar2(3000); --动态表名1
v_SourceTb2 varchar2(3000); --动态表名2
v_SourceTb3 varchar2(3000); --动态表名3
v_SourceTb4 varchar2(3000); --动态表名4
v_TotalCount varchar2(50); --总记录数
v_sql varchar2(3000); --动态sql 
begin
v_SourceTb1 := '(select '|| FieldStr ||' from '|| TbName ||') SourceTb1';
v_SourceTb2 := '(select * from '|| v_SourceTb1 ||' where '|| RowFilter ||' '|| SortStr ||') SourceTb2';
v_SourceTb3 := '(select rownum as Rowindex,SourceTb2.* from '|| v_SourceTb2 ||' where rownum<='|| MaxRowNum ||') SourceTb3';
v_SourceTb4 := '(select * from '|| v_SourceTb1 ||' where '|| RowFilter ||') SourceTb4';
v_sql := 'select count(*) as TotalCount from '|| v_SourceTb4;
execute immediate v_sql into v_TotalCount;
TotalCount := v_TotalCount;
v_sql := 'select * from '|| v_SourceTb3 ||' where RowIndex >='||MinRowNum;
open Cur_ReturnCur for v_sql;
end Per_QuickPage;
END MaterialManage;求高手帮忙看下哪里错了

解决方案 »

  1.   

    Procedure Per_QuickPage ( TbName in varchar2, --表名 FieldStr in varchar2, --字段集 RowFilter in varchar2, --过滤条件 SortStr in varchar2, --排序集 RownumFieldStr in varchar2, --分页条件 TotalCount out number, --总记录数 Cur_ReturnCur out T_CURSOR --返回的游标 ); 
    create or replace package body MaterialManage isProcedure Per_QuickPage ( TbName in varchar2, --表 名 FieldStr in varchar2, --字段集 RowFilter in varchar2, --过滤条件 SortStr in varchar2, --排序集 MinRowNum in number, --分页小值 MaxRowNum in number, --分页大值 TotalCount out number, --总记录数 Cur_ReturnCur out T_CURSOR ) 
    你看看这个一样吗?
      

  2.   

    修改包头为:create or replace package MaterialManage is
    TYPE T_CURSOR IS REF CURSOR; 
    Procedure Per_QuickPage
    (
    TbName in varchar2, --表 名
    FieldStr in varchar2, --字段集
    RowFilter in varchar2, --过滤条件
    SortStr in varchar2, --排序集
    MinRowNum in number, --分页小值
    MaxRowNum in number, --分页大值
    TotalCount out number, --总记录数
    Cur_ReturnCur out T_CURSOR
    );
    end MaterialManage; 
      

  3.   

    高手们 加个qq可以不 我存储过程 和 视图都不太好 大家帮个忙咯我qq980827202