oracle分页存储过程编写案例
2013-02-19 10:34
465 查看
编写一个存储过程,要求可以输入表名、每页显示记录数和当前页,返回总记录数、总页数和结果集
--oracle的分页
select t1.*,rownum rn from (select * from emp) t1
select t1.*,rownum rn from (select * from emp) t1 where rn<=10;
--在分页时,大家可以把下面的sql语句当作一个模板使用
select * from
(select t1.*,rownum rn from (select * from emp) t1 where rn<=10) where rn>=6;
--开发一个包,在该包中,我定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页的过程
create or replace procedure fenye
(tableName in varchar2,--表名
pageSize in number,--一页显示记录数
pageNow in number,--当前页
myrows out number,--总记录数
myPageCount out number,--总页数
p_cursor out testpackage.test_cursor--返回的记录集
)is
--定义部分
--定义sql语句 字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSzie;
begin
--执行部份
v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where 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;
--计算myPageCount
if mod(myrows,PageSize)=0 then
myPageCount=myrows/PageSize;
else
myPageCount=myrows/PageSize+1;
end if;
--关闭游标
close p_cursor;
end;
--oracle的分页
select t1.*,rownum rn from (select * from emp) t1
select t1.*,rownum rn from (select * from emp) t1 where rn<=10;
--在分页时,大家可以把下面的sql语句当作一个模板使用
select * from
(select t1.*,rownum rn from (select * from emp) t1 where rn<=10) where rn>=6;
--开发一个包,在该包中,我定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
--开始编写分页的过程
create or replace procedure fenye
(tableName in varchar2,--表名
pageSize in number,--一页显示记录数
pageNow in number,--当前页
myrows out number,--总记录数
myPageCount out number,--总页数
p_cursor out testpackage.test_cursor--返回的记录集
)is
--定义部分
--定义sql语句 字符串
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSzie;
begin
--执行部份
v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where 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;
--计算myPageCount
if mod(myrows,PageSize)=0 then
myPageCount=myrows/PageSize;
else
myPageCount=myrows/PageSize+1;
end if;
--关闭游标
close p_cursor;
end;
相关文章推荐
- java+oracle的存储过程开发案例(包含了oracle存储过程的通用分页方法、java的工厂类)
- oracle笔记——第七天:oracle视图、触发器,编写分页存储过程
- pl/sql 编写 Oracle分页的存储过程 Java调用该过程
- Oracle分页语句介绍和编写分页的存储过程
- 在java中去调用oracle的存储过程的案例
- Oracle与C#存储过程分页
- oracle实现存储过程的分页并用java代码调用存储过程
- 4000 oracle学习分页存储过程和jdbc调用
- ORACLE分页存储过程
- Oracle 分页存储过程
- Java调用Oracle的分页存储过程
- 简单搞一下 Oracle 存储过程动态SQL之获取查询分页!
- Oracle存储过程与游标结合的分页
- 存储过程分页查询(ORACLE)
- Oracle分页存储过程及java的具体调用方法
- 折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)
- Oracle 编写存储过程,在pl/sql中调用编写好的存储过程例子
- oracle的存储过程和存储函数深入分析和案例
- Oracle通用分页存储过程和AspNetPage结合
- Oracle 存储过程分页 适应FlexiGrid