分页存储过程:
1.根据ROWID来分,执行时间0.03秒
create or replace procedure del_page(
cur_page in number,
num_page in number
)
is
cursor cursor_test is
select * from userinfo where rowid in(select rid from (select rownum rn,rid from(select rowid rid,userinfo.* from
userinfo) where rownum<=cur_page*num_page) where rn>(cur_page-1)*num_page);
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.customerid||'||'||row_test.customername
||'||'||row_test.pid||'||'||row_test.telephone||'||'||row_test.address);
end loop;
end;
2.按分析函数来分,执行时间1.01秒
create or replace procedure del_page1(
cur_page in number,
num_page in number
)
is
cursor cursor_test is
select * from (select t.*,row_number() over(order by customerid desc) rk from userinfo t)
where rk<=cur_page*num_page and rk>(cur_page-1)*num_page;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.customerid||'||'||row_test.customername
||'||'||row_test.pid||'||'||row_test.telephone||'||'||row_test.address);
end loop;
end;
3.按ROWNUM来分,执行时间0.1秒
create or replace procedure del_page2(
cur_page in number,
num_page in number
)
is
cursor cursor_test is
select t.*,rownum from
userinfo t
where rownum<=cur_page*num_page and rownum>(cur_page-1)*num_page;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.customerid||'||'||row_test.customername
||'||'||row_test.pid||'||'||row_test.telephone||'||'||row_test.address);
end loop;