加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle创建一个分页过程

发布时间:2020-12-12 15:05:09 所属栏目:百科 来源:网络整理
导读:select * from(select e.*,rownum rn from emp e where rownum=10) twhere t.rn=6;create or replace package testpackage astype test_cursor is ref cursor;end testpackage;/create or replace procedure fenye( tableName in varchar2,--表明 pagesize i

select * 
from
(select e.*,rownum rn
 from emp e
 where rownum<=10
) t
where t.rn>=6;


create or replace package testpackage as
type   test_cursor        is          ref cursor;
end    testpackage;
/
create or replace procedure fenye
(
       tableName  in        varchar2,--表明
       pagesize   in        number,--每页的记录数
       pageNow     in       number,--准备到第几页
       myrows      out      number,--总记录数
       myPageCount out      number,--总页数
       p_cursor    out      testpackage.test_cursor--返回记录集
       
)      is
       v_sql       varchar2(1000);
       startNo number:=pageNow*pagesize-pagesize+1;
       endNo number:=pagesize*pageNow;
begin
        --dbms_output.put_line(startNo||'      '||endNo);
        v_sql:='select * from (select e.*,rownum rn from '||tableName||' e where rownum<='||endNo||') t where t.rn>='||startNo;
        open p_cursor for   v_sql;
        v_sql:='select count(*) from '||tableName;
        execute immediate v_sql into myrows;
        if mod(myrows,pagesize)=0 then
          myPageCount := myrows/pagesize;
        else
            myPageCount := myrows/pagesize+1;
        end if;
        --close p_cursor;
 end;
/

declare 
myrows  number(4);
mycount number(4);
pcoursor testpackage.test_cursor;
begin
  --my_pro('emp',10,6);
  fenye('emp',2,3,myrows,mycount,pcoursor);
  end;
/

create or replace  procedure my_pro(
       tableName  in    varchar2,endNo      in    number,startNo    in    number
)      is
pc       testpackage.test_cursor;
v_sql    varchar2(1000);
begin
   v_sql:='select * from (select e.*,rownum rn from '||tableName||' e where rownum<='||endNo||') t where t.rn>='||startNo;
   --v_sql:='select e.* from emp e';
   open pc for v_sql;
   
end;
/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读