分页的存储过程

废话不说了,直接上代码!


1.创建包,在包中定义游标类型
create or replace package pkg_test
is
   type mytype is ref cursor;
end;
/




2.创建过程,带一个输出参数,
输出参数的类型是定义的引用游标类型
create or replace procedure proc_page
(mycur out pkg_test.mytype)
as
begin
   open mycur for 'select * from users';
end;


3.通过java代码调用


--分页的存储过程
create or replace procedure proc_page
 (
tablename varchar2,--表名
record number,--一页多少条记录
page number,--当前页数
totalpages out number,--总页数
mycur out pkg_test.mytype--放回的结果集
)
 as
v_sql varchar2(1000);
 begin
--总页数
v_sql:='select to_number(count(*)) from '|| tablename;
execute immediate v_sql into totalpages;
  
  totalpages:=ceil(totalpages/record);

  --拼接sql语句
v_sql:='select * from (select t.*,rownum rn from(select * from '|| tablename|| 
    ') t where rownum< '||page*record ||
    ')where rn>='||(page-1)*record;
   open mycur for v_sql;

 end;


具体的调用在java代码里面实现 这里为大家分享的是在oracle里面写的一个分页的存储过程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值