java调用PLSQL分页过程

       在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java;

  --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.*,rownumrn from (select * from '||tableName

  ||')t1 where rownum<='||v_end||' )wherern>='||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("{callfenye(?,?,?,?,?,?)}");

  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();

  }

  }

  }

  }

  疯狂Java培训fkjava的课程采用针对性培养,全面提升学员就业能力,重点加强训练职业素质。老师辛勤的讲解,让学员充分感受Java的魅力,充分激发每个学员对于编程的热爱,让学员在半年的时间内掌握8-10万的代码量,成为真正的技术高手,疯狂Java采用企业全真模拟开发训练,迅速积累项目经验。让学员迅速获得其他人需要花费两年才能获得的工作技能,无忧就业!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值