>  기사  >  데이터 베이스  >  Oracle万能分页法的存储过程

Oracle万能分页法的存储过程

WBOY
WBOY원래의
2016-06-07 16:49:261018검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.