日期:2014-05-17  浏览次数:20711 次

帮忙看下存储过程哪里错了
在网上问大数据量分页怎样处理,很多人都推荐用存储过程分页
再网上找的一个分页存储过程,在数据库里执行的时候出错: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;

求高手帮忙看下哪里错了

------解决方案--------------------
请保证包头里的存储过程定义 和包体里的一样。
------解决方案--------------------
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