您的位置:首页 > 数据库 > Oracle

听韩老师的oracle的分页存储过程

2011-10-18 16:50 381 查看
听韩老师的oracle的分页存储过程

--创建一个包,在该包中,我定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页过程
create or replace produrce fenye    --fenye
(tableName in varchar2,
pageSize in number,
pageNow in number,
myRows out number,--总记录数
myPageCount out number,--总页数
p_cursor out tespackage.test_cursor,--返回的记录集
) is

--定义部分
--定义sql语句 字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;

begin
--执行部分
v_sql:='select * from

( select t1.*,rownum rn from

( select * from '||tableName||') t1     --第一个select语句出来的表的视图t1

where rownum<='||v_end||'

)

wherw rn>='||v_begin';

--把游标和sql关联
open p_cursor for v_sql;
--计算myRows和myPageCount
--组织一个sql语句
v_sql:='select count(*) from '||tableName';
--执行sql语句,并把返回的值赋给myRows
execute immediate v_sql into myRows;
if mod(myRows,pageSize)=0 then
myPageCount:=myRows/pageSize;
else
myPageCount:=myRows/pageSize+1;
end if;
--关闭游标
close p_cursor;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: