zoukankan      html  css  js  c++  java
  • Oracle 存储过程-实现分页 + 代码案例

     1     // 分页的操作
     2     
     3     public void pro_fenye(String tname,int pagesize,int pagenow){
     4         try {
     5             System.out.println("haha");
     6             CallableStatement cs = conn.prepareCall("{call pro_fenye(?,?,?,?,?,?)}");
     7             // 设置参数
     8                 // 输入参数设置
     9             cs.setString(1, tname);
    10             cs.setInt(2, pagesize);
    11             cs.setInt(3,pagenow);
    12                 // 输出参数设置
    13             cs.registerOutParameter(4, oracle.jdbc.OracleTypes.CURSOR);
    14             cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
    15             cs.registerOutParameter(6, oracle.jdbc.OracleTypes.INTEGER);
    16             //执行语句
    17             cs.execute();
    18             rs = (ResultSet)cs.getObject(4);
    19             System.out.println(rs);
    20             // 获得总条数
    21             System.out.println(cs.getInt(5));
    22             // 获得总页数
    23             System.out.println(cs.getInt(6));
    24         } catch (SQLException e) {
    25             // TODO Auto-generated catch block
    26             e.printStackTrace();
    27         }
    28     }
    --PLSQL代码
    --使用包定义游标变量类型 create or replace package package_fenye is -- 定义游标变量 type cursor_type is ref cursor; end; -- 分页的存储过程完整版 create or replace procedure pro_fenye( -- 进入存储过程的值 v_tablename in varchar2, -- 表名 v_pagesize in number, -- 规定每一页显示的数据条数 v_pagenow in number, -- 当前需要显示的页数 -- 返回的数据 -- 当前没有游标类型,要使用包来定义游标类型 cur_data out package_fenye.cursor_type, -- 返回总页数 v_count out number, -- 返回数据表中有多少条数据 v_mypages out number --返回总共分为多少页 ) is --定义变量 -- 存储sql语句 v_sql varchar2(300); -- 数据范围 v_begin number(10):=v_pagesize*(v_pagenow-1)+1; v_end number(10):=v_pagesize*v_pagenow; begin --定义查询数据的sql语句 --查询最外范围的 v_sql:= 'select * from (select rownum rn,a.* from (select * from '||v_tablename||')a)b where rn>='||v_begin||' and rn<='||v_end; --使用游标存储数据 -- 拿到总数据 open cur_data for v_sql; v_sql:='select count(*) from '||v_tablename; --执行sql语句,返回结果 --拿到总数据条数 execute immediate v_sql into v_count; -- 获得总页数 if mod(v_count,v_pagesize)= 0 then --计算总页数 v_mypages:=v_count/v_pagesize; else v_mypages:=v_count/v_pagesize+1; end if; end;
  • 相关阅读:
    Linux配置防火墙 开启80端口
    微信支付调用JSAPI缺少参数:timeStamp
    php解压zip文件
    css JavaScript 笔记
    css
    html标签
    模拟服务器返回html
    网页特殊符号HTML代码大全
    selectors模块
    select
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/5649083.html
Copyright © 2011-2022 走看看