Oracle存储过程,中涉及到分页时,我建议你用java代码来调用Oracle存储过程,如果你是Oracle的热捧者。那么下面的文章对于你而言一定很有意义。以下的文章就是对相关内容的描述。
create table emp(
- id int,
- ename varchar2(30),
- sale number(7,2)
共7位最大就是这样的数据
)
开发一个包-
- create or replace package testpackage as
- type test_cursor is ref cursor;
- end testpackage;
开始写分页的过程
- create or replace procedure fenye
- (tableName in varchar2,
- pagesizes in number,
一页显示记录
- pageNow in number,
- myrows out number,
总记录数
- myPageCount out number,
总页数
- p_cursor out testpackage.test_cursor
返回的记录集
)is
定义变量
定义sql语句 字符串-
- v_sql varchar2(1000);
定义sql长度
定义两个整数
- v_begin number:=(pageNow-1)*pagesizes+1;
- v_end number:=pageNow*pagesizes;
开始执行-
- v_sql:='select * from
- (select t1.*,rownum rn from ( select * from '||tableName||' order by sale) 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;
执行字符串的sql语句 必须格式,计算mypageCount
- if mod(myrows,pagesizes)=0 then
- myPageCount:=myrows/pagesizes;
- else
- myPageCount:=myrows/pagesizes+1;
- end if;
关闭游标
- close p_cursor;-
必须关闭游标,不是不能释放占有的空间,这很重要
- end;
以上文章就是使用java代码 调用Oracle 存储过程的描述。
【编辑推荐】