oracle实现分页的存储过程
来源:互联网 发布:数据库系统概论 微盘 编辑:程序博客网 时间:2024/05/22 06:16
第一步:创建包及其游标
代码如下:
- ----建包及创建游标--------
- CREATE OR REPLACE PACKAGE sp_package_page AS
- TYPE pages_cursor IS REF CURSOR;
- END;
- ----建包及创建游标--------
第二步:实现分页存储过程的编写
代码如下:
- ----实现分页存储过程------
- CREATE OR REPLACE PROCEDURE sp_pages_test(
- tabName IN varchar2,--表名
- currentPage IN NUMBER,--当前页数
- pageCount IN NUMBER,--每页显示的条数
- currentRows OUT NUMBER,--表中的所有数据
- currentPageCount OUT NUMBER,--总页数
- p_cursor OUT sp_package_page.pages_cursor)--返回的记录集
- IS
- --定义部分
- --定义SQL语句字符串
- v_sql VARCHAR2(1000);
- --定义两个整数,计算开始条数和结束条数
- v_begin NUMBER:=(currentPage-1)*pageCount+1;
- v_end NUMBER:=currentPage*pageCount;
- BEGIN
- --执行部分
- v_sql:='SELECT * FROM (SELECT * FROM (SELECT t.*,ROWNUM spno FROM (SELECT * FROM '|| tabName ||' ) t) WHERE spno<='|| v_end ||') WHERE spno>='|| v_begin;
- --把游标和sql语句关联
- OPEN p_cursor FOR v_sql;
- --计算currentRows和currentPageCount
- --组织一个sql
- v_sql:='SELECT COUNT(*) FROM '|| tabName ;
- --执行sql语句
- EXECUTE IMMEDIATE v_sql INTO currentRows;
- --计算currentPageCount
- IF MOD(currentRows,pageCount)=0 THEN
- currentPageCount:=currentRows/pageCount;
- ELSE
- currentPageCount:=currentRows/pageCount+1;
- END IF;
- END;
- ----实现分页存储过程------
第三步:在java程序中调用实现分页的存储过程
代码如下:
- package com.procedure.test;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- public class ProcedureTest2 {
- /**
- * ORACLE数据库存储过程调用
- * 以下操作必须用ORACLE11G 的驱动包
- * @param args
- */
- public static void main(String[] args) {
- try {
- //1.加载驱动类
- Class.forName("oracle.jdbc.driver.OracleDriver");
- //2.获取连接对象
- Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:VINCENT","SCOTT","tiger");
- //3.创建CallableStatement对象
- CallableStatement cs=conn.prepareCall("{call sp_pages_test(?,?,?,?,?,?)}");
- //4.为存储过程设置参数
- cs.setString(1, "emp");
- cs.setInt(2, 1);
- cs.setInt(3, 2);
- cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
- cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
- cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
- //5.执行
- cs.execute();
- //6.取值
- System.out.println("总共有"+cs.getInt(4)+"条数据!");
- System.out.println("总页数"+cs.getInt(5)+"!");
- ResultSet rs=(ResultSet)cs.getObject(6);
- while (rs.next()) {
- System.out.println(rs.getString("ename"));
- System.out.println(rs.getString("job"));
- System.out.println(rs.getDouble("sal"));
- }
- cs.close();
- conn.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- oracle实现分页的存储过程
- oracle的存储过程实现数据分页
- Oracle存储过程实现分页
- Oracle存储过程实现分页
- oracle存储过程实现分页
- Oracle 存储过程实现分页
- oracle存储过程实现分页
- oracle存储过程实现分页
- oracle分页的存储过程
- ORACLE分页的存储过程
- oracle 分页的存储过程
- oracle分页的存储过程
- oracle存储过程实现JAVA调用的分页
- 在Oracle存储过程中正确的实现分页
- 实现分页的存储过程
- 在Oracle存储过程中实现分页
- 在Oracle存储过程中实现分页
- c#+oracle存储过程实现分页
- c语言:十进制转换为二进制
- 经典C源程序100例
- CSDN
- spring学习笔记1
- Apache Tomcat 7.0.0 简单配置
- oracle实现分页的存储过程
- 关于外挂
- IE9发布初期普及速度是IE8的5倍
- Eclipse3.0.1上Visual Editor
- HTML列表的类型
- 好好学习
- april 3 ,2011
- 擅用搜索引擎
- 电子文档阅读小技巧