java串連oracle資料庫調用預存程序實現分頁查詢(emp為例)

來源:互聯網
上載者:User

標籤:

第一步:建一個含遊標類型的包

sql>create or replace package testPackage

      as type test_cursor is ref cursor;    --定義名為test_cursor 的遊標

      end testPackage;

第二步:編寫分頁的預存程序

sql>create or replace procedure fenYe(

      tableName in varchar2,--表名

      pageSize in number,--每頁顯示的記錄數

      pageNow in number,--當前頁

      myRows out number,--總記錄數

      myPageCount out number,--總頁數

      P_cursor out testPackage.test_cursor--返回的記錄集

      ) is

      --定義部分 sql語句字串,以及兩個變數

      v_sql varchar(1000);

      v_begin number:=(pageNow-1)*pageSize+1;

      v_end number:=pageSize*pageNow;

      --執行部分

      begin

      v_sql:=‘select * from (select a1.*,rownum rn from (select * from ‘||tableName||‘) a1 where

      rownum<=‘||v_end||‘) where rn>=‘||v_begin;

      open P_cursor for v_sql;  --遊標關聯sql

      v_sql:=‘select count (*) from ‘||tableName;

      execute immediate v_sql into myRows;

      if mod(myRows,pageSize)=0 then

      myPageCount:=myRows/pageSize;

      else

      myPageCount:=myRows/pageSize+1;

      end if;

      close P_cursor;

      end;

      /

第三步 java調用該過程  記得引進jar 包

import java.sql.*;

public class fenYe {

public static void main(String [] args){

try{

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");  // ORCL 位元據庫名

CallableStatement cs=ct.prepareCall("{call fenYe(?,?,?,?,?,?)}");

//給?賦值

cs.setString(1,"emp");

cs.setInt(2,5);//每頁顯示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();//執行

int rowNum=cs.getInt(4);

int pageCount=cs.getInt(5);

ResultSet rs=(ResultSet)cs.getObject(6);

System.out.println("rowNum"+rowNum);

System.out.println("總頁數:"+pageCount);

while(rs.next()){

System.out.println("編號:"+rs.getInt(1)+"名字:"+rs.getString(2));}

}catch(Exception e){

e.printStackTrace();}

}

}

 

java串連oracle資料庫調用預存程序實現分頁查詢(emp為例)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.