关闭

分页的存储过程

标签: oracle存储过程
607人阅读 评论(0) 收藏 举报
分类:

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


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里面写的一个分页的存储过程!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62670次
    • 积分:1040
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:6篇
    • 译文:0篇
    • 评论:22条
    最新评论