Home  >  Article  >  Database  >  Oracle万能分页法的存储过程

Oracle万能分页法的存储过程

WBOY
WBOYOriginal
2016-06-07 16:49:261018browse

Oracle万能分页法的存储过程 --创建一个包,在包中定义一个 游标类型 create or replace package testfenyepackage as type test

Oracle万能分页法的存储过程

--创建一个包,在包中定义一个 游标类型
 create or replace package testfenyepackage as
 type test_cursor is ref cursor ;
 end testfenyepackage;

--编写分页的过程
 create or replace procedure fenyeTest
 (
 tableName varchar2,--表名
 pageSize number,--每页显示的数目
 pageNow number,--当前的页数
 Outrows out number,--返回总记录数
 pagecount out number,--总页数
 p_cursor out testfenyepackage.test_cursor--返回的记录集
 )
 as
 --定义部分
 --第一一个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
  where rownum='||v_begin;
 --把游标和sql相关联
 open p_cursor for v_sql;
 --计算Outrows  pagecount
 --组织一个 sql语句
 v_sql:='select count(*) from '||tableName;
 --执行sql并把返回的结果赋值给Outrows
 execute immediate v_sql into Outrows;
 --计算页数
 if mod(Outrows,pageSize)=0 then
 pagecount:=Outrows/pageSize;
 else
 pagecount:=Outrows/pageSize+1;
 end if;
 end;

Java中用JDBC调用Oracle存储过程和函数

Oracle存储过程本地编译方式

Oracle 存储过程及REF CURSOR的使用

Oracle存储过程中提示“权限不足”的解决办法

Oracle利用存储过程返回结果集开发报表

Oracle存储过程中临时表的使用技巧

本文永久更新链接地址:

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn