PL/SQL ——分页编程
通过PL/SQL编程,编写分页存储过程。代码如下所示:
1 --PL/SQL开发编写分页代码
2 --创建包
3 create or replace package Page as
4 type test_cursor is ref cursor
5 end Page;
6 --创建存储过程
7 create or replace procedure Page(
8 (tablename in varchar2,--表名
9 PageSize in number,--每页显示数据大小
10 PageNow in number,--当前页面
11 RowsCount out number,--总记录数
12 PagesCout out number,--总页数
13 p_cursor out Page.test_cursor--返回的记录数
14 )
15 is
16 --定义部分
17 --定义sql语句
18 v_sql varchar2(1000);
19 --定义两个整数
20 v_beginNum number:=(PageNow-1)*PageSize+1;--页面起始数据
21 v_end number:=PageNow*PageSize;--页面结束数据
22 begin
23 --执行部分
24 v_sql:='select * from (select t1.* rowNum rn from (select * from '||tablename ||') t1 where rownum<='||v_end||')where rn>='||v_beginNum;
25 --把游标和sql关联
26 open p_cursor for v_sql;
27 --计算总记录数和总页数
28 --计算总记录数
29 v_sql:='select count(*) from '||tablename;
30 --执行sql语句,返回结果赋值给rowsCount
31 execute immediate v_sql into RowsCount;
32 --计算总页面数
33 if mode(RowsCount,PageSize)=0 then
34 PagesCout:=RowsCount/PageSize;
35 else
36 PagesCout:=RowsCount/PageSize;
37 end if
38 --关闭游标
39 close p_cursor;
40 end