java 調用 PLSQL分頁過程

本文详细介绍了PLSQL分页过程的实现方法,包括创建存储过程、定义SQL语句字符串、设置开始和结束记录数、执行SQL并获取总记录数和总页数,以及通过JAVA调用该存储过程来获取分页后的数据。通过实例代码演示了如何使用Oracle数据库进行分页操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 --PLSQL分頁過程
create or replace procedure fenye
(tableName in varchar2,  --表名
 page_size in number,   --每頁顯示記錄數
 pageNow  in number, --當前頁
 myrows  out number, -- 總記錄數
 myPageCount out number, --總頁數
 my_cursor out my_new_pack.test_cursor --返回的結果集
)is
--定義SQL語句  字符串
v_sql varchar2(1000);
v_begin number := (pageNow-1)*page_size+1;
v_end number := pageNow*page_size;
begin
 v_sql :=  'select * from (select t1.*,rownum rn from (select * from '||tableName
 ||')t1 where rownum<='||v_end||' )where rn>='||v_begin;
 open my_cursor for v_sql;
 v_sql :='select count(*) from '|| tableName;
 execute immediate v_sql into myrows;
 if mod(myrows,page_size) =0 then
 myPageCount := myrows/page_size;
 else myPageCount := myrows/page_size+1;
 end if;
end;
JAVA調用代碼:

import java.sql.*;


public class test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Connection conn = null;
  CallableStatement cs = null;
  ResultSet rs =null;
  try{
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:kelvin111G2","system","MANAGER");
   cs = conn.prepareCall("{call fenye(?,?,?,?,?,?)}");
   cs.setString(1, "scott.emp");
   cs.setInt(2, 5);
   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);
   cs.execute();
   System.out.println("總記錄數為"+cs.getInt(4));
   System.out.println("總頁數"+cs.getInt(5));
   rs = (ResultSet)cs.getObject(6);
   while(rs.next()){
    System.out.println(rs.getInt(1)+"==="+rs.getString(2)+"==="+rs.getString(3));
   }
   
  }catch(Exception e){
   e.printStackTrace();
  }finally{
    try {
     rs.close();
     cs.close();
     conn.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
  }
  
 }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值