oracle 分页存储过程
create or replace package MyPackage as
type MyCursor is ref cursor;
procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,
resultCount out int, resultCursor out MyCursor);
end MyPackage;
create or replace package Body MyPackage is
procedure SelectBase(pageIndex int,pageSize int,tableName varchar2,whereStr varchar2,
resultCount out int, resultCursor out MyCursor)
is
--定义变量
newtableName varchar2(4000);
rowStart int;
rowEnd int;
mySql varchar2(8000);
whereOnly varchar2(8000);
OrderOnly varchar2(400);
begin
newtableName:=tableName;
mySql:='select count(*) from '||tableName;
if whereStr is not null and length(whereStr)>0
then
rowStart:=instr(whereStr,'order by');
if rowStart>0
then
whereOnly:=substr(whereStr, 1,rowStart-1); --取得条件
OrderOnly:=substr(whereStr,rowStart, length(whereStr)-rowStart+1); --取得排序方式(order by 字段 方式)
else
whereOnly:=whereStr;
OrderOnly:='';
end if;
whereOnly:=' where '|| whereOnly;
mySql:=mySql||whereOnly;
end if;
execute immediate mySql into resultCount;
-- dbms_output.put_line('查询总条数SQL=>'||whereStr||'--'||mySql||resultCount);
--执行查询,查询总条数
--不分页查所有
if pageIndex=0 and pageSize=0
then
mySql:='select * from '||tableName||whereOnly||OrderOnly;
else
--计算起始和结束索引
rowStart:=(pageIndex-1)*pageSize+1;
rowEnd:=rowStart+pageSize-1;
mySql:='select * from (select t.*,RowNum as rn from (select * from '||newtableName||whereOnly||OrderOnly||') t) where rn between '||rowStart||' and '||rowEnd;
end if;
open ResultCursor for mySql;
--dbms_output.put_line('SQL=>'||mySql);
end SelectBase;
end MyPackage;
如果各位遇到了在create or replace package Body MyPackage is 说create错误,那么解决方法是。
end MyPackage;
在此,加上“/”并分别执行就搞定了。
create or replace package Body MyPackage is
作者:
吉桂昕
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
出处: http://www.cnblogs.com/jiguixin
我的新浪微博: http://weibo.com/jiguixin
本文版权归【吉桂昕】和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。

浙公网安备 33010602011771号