龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle存储过程中分页,用java代码来完成

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
Oracle存储过程,中涉及到分页时,我建议你用java代码来调用 Oracle 存储过程,如果你是Oracle的热捧者。那么下面的文章对于你而言一定很有意义。以下的文章就是对相关内容的描述。

Oracle存储过程,中涉及到分页时,我建议你用java代码来调用Oracle存储过程,如果你是Oracle的热捧者。那么下面的文章对于你而言一定很有意义。以下的文章就是对相关内容的描述。

create table emp(

  1. id int,  
  2. ename varchar2(30),  
  3. sale number(7,2)  

共7位最大就是这样的数据
)

开发一个包-

  1. create or replace package testpackage as  
  2. type test_cursor is ref cursor;  
  3. end testpackage; 

开始写分页的过程

  1. create or replace procedure fenye  
  2. (tableName in varchar2,  
  3. pagesizes in number, 

一页显示记录
 

  1. pageNow in number,  
  2. myrows out number, 

总记录数

  1. myPageCount out number, 

总页数

  1. p_cursor out testpackage.test_cursor 

返回的记录集
)is

定义变量

定义sql语句 字符串-

  1. v_sql varchar2(1000); 

定义sql长度

定义两个整数

  1. v_begin number:=(pageNow-1)*pagesizes+1;  
  2. v_end number:=pageNow*pagesizes; 

开始执行-

  1. v_sql:='select * from   
  2. (select t1.*,rownum rn from ( select * from '||tableName||' order by sale) t1 where rownum<='||v_end||')  
  3. where rn>='||v_begin; 

把游标和sql关联

  1. open p_cursor for v_sql; 

计算myrows和mypageCount,组织了一个sql 语句

  1. v_sql:='select count(*) from '||tableName; 

执行sql,并把返回的值,赋给 myrows

  1. execute immediate v_sql into myrows; 

执行字符串的sql语句 必须格式,计算mypageCount

  1. if mod(myrows,pagesizes)=0 then  
  2. myPageCount:=myrows/pagesizes;  
  3. else  
  4. myPageCount:=myrows/pagesizes+1;  
  5. end if; 

关闭游标

  1. close p_cursor;- 

必须关闭游标,不是不能释放占有的空间,这很重要

  1. end; 

以上文章就是使用java代码 调用Oracle 存储过程的描述。

精彩图集

赞助商链接