Oracle实践--PL/SQL综合之分页存储过程

Oracle PL/SQL分页的存储过程

         Oracle,分页,存储过程三个词结合起来,来个综合点的小练习,运用之前的PL/SQL创建一个分页的存储过程,只需要简单几步即可。

1.声明一个引用游标

[sql] view plaincopyprint? 在CODE上查看代码片 派生到我的代码片
  1. create or replace package cur_ref_type 
  2. as-- is or as can be used 
  3. type cur_ref is ref cursor
  4. end
create or replace package cur_ref_type
as-- is or as can be used
type cur_ref is ref cursor;
end;
2.编 写存储过程

[sql] view plaincopyprint? 在CODE上查看代码片 派生到我的代码片
  1. create or replace procedure divideByPge 
  2.          (tableName varchar2,pageSize number,currentPage number, 
  3.                  totalPage out number,totalRecord out number,results out cur_ref_type.cur_ref)--要带包名 
  4. is 
  5. v_sql varchar2(200);--用于写sql语句的 
  6. v_begin number;--开始位置 
  7. v_end number;--结束位置 
  8. begin 
  9. v_begin := (currentPage -1) * pageSize; 
  10. v_end := currentPage * pageSize; 
  11. v_sql :='select count(*) from '||tableName;--将表名字符串拼接sql语句 
  12. execute immediate v_sql into totalRecord;--查询所有记录 
  13. totalPage :=ceil(totalRecord/pageSize);--计算总页数 
  14. v_sql :='select * from (select rownum rn,'||tableName||'.* from '||tableName||' where rownum <= '||v_end||') where rn > '||v_begin; 
  15. open  results for v_sql; 
  16. end
create or replace procedure divideByPge
         (tableName varchar2,pageSize number,currentPage number,
                 totalPage out number,totalRecord out number,results out cur_ref_type.cur_ref)--要带包名
is
 v_sql varchar2(200);--用于写sql语句的
 v_begin number;--开始位置
 v_end number;--结束位置
begin
 v_begin := (currentPage -1) * pageSize;
 v_end := currentPage * pageSize;
 v_sql :='select count(*) from '||tableName;--将表名字符串拼接sql语句
 execute immediate v_sql into totalRecord;--查询所有记录
 totalPage :=ceil(totalRecord/pageSize);--计算总页数
 v_sql :='select * from (select rownum rn,'||tableName||'.* from '||tableName||' where rownum <= '||v_end||') where rn > '||v_begin;
 open  results for v_sql;
end;
3.Java 客户端调用
[java] view plaincopyprint? 在CODE上查看代码片 派生到我的代码片
  1. String driver ="oracle.jdbc.driver.OracleDriver"
  2.         String url  = "jdbc:oracle:thin:@localhost:1521:orcl"
  3.         String username = "scott"
  4.         String password = "ysjian"
  5.         try
  6.            Class.forName(driver); 
  7.            Connection conn = 
  8.                         DriverManager.getConnection(url,username,password); 
  9.            CallableStatement cs = conn.prepareCall("{call 
  10.                                          divideByPge(?,?,?,?,?,?)}"); 
  11.            cs.setString(1,"emp");//表名 
  12.            cs.setInt(2, 3);//分页单位 
  13.            cs.setInt(3, 1);//当前页 
  14.            cs.registerOutParameter(4, OracleTypes.INTEGER);//注册输出参数 
  15.            cs.registerOutParameter(5, OracleTypes.INTEGER); 
  16.            cs.registerOutParameter(6, OracleTypes.CURSOR);//注册输出参数游标 
  17.            cs.execute();//执行 
  18.            ResultSet rs = (ResultSet)cs.getObject(6);//获得游标 
  19.            while(rs.next()){ 
  20.                int empno = rs.getInt("empno"); 
  21.                String ename = rs.getString("ename"); 
  22.                System.out.println(empno+"-->"+ename); 
  23.            } 
  24.         } catch (ClassNotFoundException | SQLException e) { 
  25.            e.printStackTrace(); 
  26.         } 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;、本 3项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看ReadmE.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、资 1源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READMe.m文件(如d有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值