|
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
create
or replace procedure
fenye( v_in_sql
in varchar2,--待分页的SQL
v_in_pagesize
in number,--每页显示记录数
v_in_pagenow
in number,--当前页数
v_out_result
out cursor_type_page.my_cursor,--返回结果集
v_out_rows
out number,--记录总数
v_out_pagecount
out number--总页数
) is--定义变量 v_sql varchar2(2000);
v_start number;
v_end number;
begin --开始记录数
v_start:=v_in_pagesize*(v_in_pagenow-1)+1;
--结束记录数
v_end:=v_in_pagenow*v_in_pagesize;
--分页SQL实现
v_sql:=select
* from (select
t.*,rownum rn from (v_in_sql) t
where rownum<='||v_end||')
where rn>='||v_start||';
--打开游标
open
v_out_result for
v_sql; --查询共有多少条记录
select
count(*) into
v_out_rows from
(v_in_sql); --计算总页数
if mod(v_out_rows,v_in_pagesize)=0
then v_out_pagecount:=v_out_rows/v_in_pagesize;
else v_out_pagecount:=v_out_rows/v_in_pagesize+1;
end
if; end; |
存储过程进行分页
最新推荐文章于 2022-09-19 23:46:31 发布
本文介绍了一种使用 Oracle PL/SQL 实现分页查询的方法。通过创建存储过程 `fenye`,输入 SQL 语句及分页参数,返回指定页数的数据记录。该方法包括计算起始和结束记录数、构建分页 SQL、获取总记录数并计算总页数等功能。
2414

被折叠的 条评论
为什么被折叠?



